[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.pswp.cn/news/535378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535378.shtml
英文地址,請注明出處:http://en.pswp.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…

logstash-filter模塊

Fillters 在Logstash處理鏈中擔任中間處理組件。他們經常被組合起來實現一些特定的行為來&#xff0c;處理匹配特定規則的事件流。常見的filters如下&#xff1a; grok&#xff1a;解析無規則的文字并轉化為有結構的格式。Grok 是目前最好的方式來將無結構的數據轉換為有結構可…

weblogic啟動慢

1.最差的解決辦法 執行命令 mv /dev/random /dev/random.ORIG ln /dev/urandom /dev/random   將/dev/random 指向/dev/urandom 2. 較好的解決辦法&#xff1a; 在weblogic啟動腳本里setDomainEnv.sh: 加入以下內容 JAVA_OPTIONS"${JAVA_OPTIONS}" -Dja…

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;用法非常簡單&…

nginx proxy_cache緩存詳解

目錄 1. 關于緩沖區指令 1.1 proxy_buffer_size1.2 proxy_buffering1.3 proxy_buffers1.4 proxy_busy_buffers_size1.5 proxy_max_temp_file_size1.6 proxy_temp_file_write_size1.7 緩沖區配置實例2. 常用配置項 2.1 proxy_cache_path2.2 proxy_temp_path2.3 proxy_cache2.4 …

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(密碼) . …

Mysql高性能優化技能總結

數據庫命令規范 所有數據庫對象名稱必須使用小寫字母并用下劃線分割 所有數據庫對象名稱禁止使用mysql保留關鍵字&#xff08;如果表名中包含關鍵字查詢時&#xff0c;需要將其用單引號括起來&#xff09; 數據庫對象的命名要能做到見名識意&#xff0c;并且最后不要超過32個…

Redis的AOF日志

如果 Redis 每執行一條寫操作命令&#xff0c;就把該命令以追加的方式寫入到一個文件里&#xff0c;然后重啟 Redis 的時候&#xff0c;先去讀取這個文件里的命令&#xff0c;并且執行它&#xff0c;這不就相當于恢復了緩存數據了嗎&#xff1f; 這種保存寫操作命令到日志的持久…

Redis 核心技術與實戰

目錄 開篇詞 | 這樣學 Redis&#xff0c;才能技高一籌 01 | 基本架構&#xff1a;一個鍵值數據庫包含什么&#xff1f; 02 | 數據結構&#xff1a;快速的Redis有哪些慢操作&#xff1f; 鍵和值用什么結構組織&#xff1f; 為什么哈希表操作變慢了&#xff1f; 有哪些底層數…

redis核心技術與實戰(二)緩存應用篇

1.《旁路緩存&#xff1a;redis 在緩存中工作原理》 1.緩存的兩個特征 1.什么是緩存&#xff0c;有什么特征&#xff1f; 磁盤->內存->cpu 之間讀寫速度差異巨大&#xff0c;為了平衡他們之間的差異&#xff0c;操作系統默認使用了兩種緩存&#xff1b; CPU 里面的末級…

redis核心技術與實戰(三) 性能篇

影響redis性能主要有以下部分&#xff1a; Redis 內部的阻塞式操作&#xff1b; CPU核和NUMA架構 Redis關鍵系統配置 Redis內存碎片 Redis緩沖區 下面一個個來介紹這些地方 1.《redis 有哪些阻塞點&#xff1f;》 redis實例主要交互的對象有以下幾點&#xff0c;我們依據下面這…

redis核心與實戰(一)數據結構篇

1.《redis數據結構概覽》 1.數據結構概覽 數據模型&#xff1a;一共5種&#xff0c;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Hash&#xff08;哈希&#xff09;、Set&#xff08;集合&#xff09;和 Sorted Set&#xff08;有序集合&#xf…

redis核心技術與實戰(四)高可用高擴展篇

1.《redis架構組成》 1.redis學習維度 2.一個基本的鍵值型數據庫包括什么&#xff1f; 1.訪問框架 redis通過網絡框架進行訪問&#xff0c;使得 Redis 可以作為一個基礎性的網絡服務進行訪問&#xff0c;擴大了redis應用范圍&#xff1b; 過程&#xff1a;如果客戶端發送“pu…