syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

一、syslog-ng 說明

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、南州晴隆網(wǎng)絡(luò)推廣、微信小程序、南州晴隆網(wǎng)絡(luò)營(yíng)銷、南州晴隆企業(yè)策劃、南州晴隆品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供南州晴隆建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.muchs.cn

二、syslog-ng 下載安裝

三、syslog-ng 配置文件詳細(xì)說明

四、配置syslog-ng收集操作日志

五、使用loganalyzer展示收集日志

1.syslog-ng說明

syslog-ng應(yīng)用程序是一個(gè)靈活和高度可伸縮的系統(tǒng)日志應(yīng)用程序創(chuàng)建集中的和可信的日志解決方案的理想選擇。syslog-ng的主要特征概括如下:

  (1)可靠的日志傳輸:syslog-ng應(yīng)用程序使您能夠發(fā)送你的主機(jī)到遠(yuǎn)程服務(wù)器的日志消息使用最新的協(xié)議標(biāo)準(zhǔn)。不同服務(wù)器的日志可以收集并存儲(chǔ)在專用的日志服務(wù)器上集中。將日志消息使用TCP協(xié)議確保不會(huì)有消息丟失。

  (2)使用TLS安全日志:日志消息可能包含敏感信息,不應(yīng)由第三方訪問。因此,syslog-ng支持傳輸層安全(TLS)協(xié)議加密通信。

  TLS也允許宿主的相互的身份驗(yàn)證,并使用X.509證書。

  (3)直接數(shù)據(jù)庫(kù)訪問:存儲(chǔ)數(shù)據(jù)庫(kù)中的日志消息使您可以輕松地搜索和查詢?nèi)罩痉治龅男畔⒑突ゲ僮鞯膽?yīng)用程序。

  syslog-ng應(yīng)用程序支持以下數(shù)據(jù)庫(kù):MSSQL,MySQL,ORACLE,PostgreSQL,SQLite

  (4)不同平臺(tái)支持:syslog-ng應(yīng)用程序的理想選擇收集日志在大規(guī)模異構(gòu)環(huán)境中使用不同的操作系統(tǒng)和硬件平臺(tái),包括Linux、Unix、BSD、Sun Solaris,hp-ux,Tru64,AIX。

  (5)過濾和分類:syslog-ng應(yīng)用程序可以傳入日志消息根據(jù)其內(nèi)容和各種參數(shù),像源主機(jī)應(yīng)用程序,和優(yōu)先級(jí)。目錄、文件和數(shù)據(jù)庫(kù)表可以創(chuàng)建動(dòng)態(tài)使用宏。

  復(fù)雜的過濾使用正則表達(dá)式和布爾操作符提供了幾乎無限的靈活性,只有重要的日志消息轉(zhuǎn)發(fā)給所選擇的目的.

  (6)解析和重寫:syslog-ng應(yīng)用程序可以段日志消息命名字段或列,并修改這些字段的值。

  (7)IPv4和IPv6支持:syslog-ng應(yīng)用程序可以運(yùn)行在兩個(gè)IPv4和IPv6網(wǎng)絡(luò)環(huán)境;它可以接收和發(fā)送信息到兩種類型的網(wǎng)絡(luò)。

2.syslog-ng下載安裝

2.1.下載路徑:

   https://my.balabit.com/downloads/syslog-ng/sources/3.6.4/source

   https://my.balabit.com/downloads/eventlog/0.2

2.2.安裝eventlog

   tar -xf eventlog_0.2.12.tar.gz 
   cd eventlog_0.2.12/
   ./configure --prefix=/usr/local/eventlog
   make
   make install
   
   export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig
   
   tar -xf syslog-ng_3.6.4.tar.gz 
   cd syslog-ng-3.6.4/
   ./configure --prefix=/usr/local/syslog-ng --with-libol=/usr/local/libol
   make
   make install
   
   configure: error: Package requirements (glib-2.0 >= 2.12.0) were not met:
   Requested 'glib-2.0 >= 2.12.0' but version of GLib is 2.10.2
   解決:
   yum install glib2-devel

3.syslog-ng配置文件詳細(xì)說明

syslog-ng配置文件組成部分:
options { option1(params); option2(params); ... }; //全局選項(xiàng)設(shè)置
source s_internal { internal(); };  //定義日志源
destination d_network { network("10.1.2.3" transport("udp"); }; //定義目標(biāo)
filter <identifier> { <filter_type>("<filter_expression>"); }; //設(shè)置過濾器,選項(xiàng)(例如TLS加密)和其他高級(jí)功能。
log { source(s_internal); destination(d_file); }; //創(chuàng)建一個(gè)日志語句連接源和當(dāng)?shù)氐哪康牡亍?
3.1.syslog-ng的日志處理流程:
source(日志源)->filter(過濾)->destination(目標(biāo))->log(日志鏈)

3.2.選項(xiàng)詳細(xì)說明
syslog-ng應(yīng)用程序有許多全局管理域名使用,使用時(shí)間戳格式,和其他通用點(diǎn)。每個(gè)選項(xiàng)參數(shù),類似于驅(qū)動(dòng)程序規(guī)范。設(shè)定全球選項(xiàng),添加一個(gè)選項(xiàng)語句syslog-ng配置文件使用下面的語法:options { option1(params); option2(params); ... };


全局選項(xiàng):
   bad-hostname() [default no]
   //值:正則表達(dá)式
   //可通過正規(guī)表達(dá)式指定某主機(jī)的信息不被接受
   
   chain-hostnames() [default no]
   //值:yes | no
   //是否打開主機(jī)名鏈功能,打開后可在多網(wǎng)絡(luò)段轉(zhuǎn)發(fā)日志時(shí)有效
   
   check-hostname() [default no]
   //值:yes | no
   //啟用或禁止檢查主機(jī)名包含有效的字符串
   
   create-dirs() [default no]
   //值: yes | no
   //當(dāng)指定的目標(biāo)目錄不存在時(shí),是否創(chuàng)建該目錄
   
   custom-domain() default[empty string]
   //值:string
   //使用這個(gè)選項(xiàng)指定一個(gè)自定義的域名后附加短主機(jī)名接收FQDN。這個(gè)選項(xiàng)會(huì)影響每一個(gè)輸出消息:事件日志消息,文件來源,MARK的消息和syslog-ng OSE的內(nèi)部消息。
   
   dir-group() default[root]
   //值:groupid
   //指定新創(chuàng)建目錄的默認(rèn)組
   
   dir-owner() default[root]
   //值:userid
   //指定新創(chuàng)建目錄的默認(rèn)用戶
   
   dir-perm() default[0700]
   //值:permission value
   //指定目錄的權(quán)限,使用此方式標(biāo)注,例如0700
   
   DNS-cache() default[yes]
   //值:yes | no
   //啟用或禁止DNS緩存
   
   dns-cache-expire() default[3600]
   //值:number
   //指定DNS查詢緩存過期時(shí)間
   
   dns-cache-expire-failed() default[60]
   //值:number
   //指定失敗的DNS緩存過期時(shí)間
   
   dns-cache-hosts() default[unset]
   //值:filename
   //指定文件在/etc/hosts,包含靜態(tài)的IP->HOSTNAME的映射關(guān)系,使用此選項(xiàng)解析主機(jī)名而非DNS。
   
   dns-cache-size() default[1007]
   //值:number
   //指定DNS緩存主機(jī)名的數(shù)量
   
   file-template() defalut[local timezone]
   //值:時(shí)間偏移量 (如: +03:00)
   //指定一個(gè)默認(rèn)模板,類似文件的目的地使用。例如:
   template t_isostamp { template("$ISODATE $HOST $MSGHDR$MSG\n"); };
   options { file-template(t_isostamp); };
   
   flush-lines() default[100]
   //值:number //指定有多少行文件一次刷新到目的地,syslog-ng應(yīng)用程序等待這行數(shù)積累并發(fā)送它們?cè)趩蝹€(gè)批處理。增加這個(gè)數(shù)量增加吞吐量隨著越來越多的消息被發(fā)送在單個(gè)批處理,但是也增加了信息延遲。限制延遲調(diào)整flush-timeout()選項(xiàng)。默認(rèn)情況下,syslog-ng所等待100行。syslog-ng不會(huì)將消息發(fā)送到目的地,直到flush-timeout()時(shí)間的流逝(默認(rèn)10秒)。如果你停止或重新加載syslog-ng OSE的網(wǎng)絡(luò)資源連接
   
   flush-timeout() default[10000]
   //值:時(shí)間以毫秒為單位
   //指定時(shí)間syslog-ng等待行積累的輸出緩沖區(qū)。有關(guān)更多信息,查看flush-lines()選項(xiàng)。
   
   frac-digits() default[10000]
   //值:number  //syslog-ng應(yīng)用程序可以存儲(chǔ)的第二個(gè)分?jǐn)?shù)顯示時(shí)間戳ISO8601格式。frac-digits()參數(shù)指定數(shù)字存儲(chǔ)的數(shù)量。數(shù)字存儲(chǔ)分?jǐn)?shù)由零填充如果原始消息的時(shí)間戳指定幾秒鐘。分?jǐn)?shù)可以總是被存儲(chǔ)接收到的消息的時(shí)間。注意,syslog-ng可以添加non-ISO8601的分?jǐn)?shù)時(shí)間戳。
 
   group() default[root]
   //值:groupid
   //輸出文件的默認(rèn)組。默認(rèn)情況下,syslog-ng改變?cè)L問文件的權(quán)限(例如/dev/null)。0600根。禁用修改權(quán)限,使用這個(gè)選項(xiàng)-1
   
   keep-hostname() default[no]
   //值:yes or no
   //啟用或禁止主機(jī)名重寫
   
   keep-timestamp() default[yes]
   //值:yes | no
   //指定syslog-ng是否應(yīng)該接受發(fā)送應(yīng)用程序收到的時(shí)間戳或客戶端。如果禁用,接收的時(shí)候使用,這個(gè)選項(xiàng)可以指定全局每個(gè)源。源的地方設(shè)置將覆蓋全局選項(xiàng)如果可用。
   
   log-fifo-size() default[10000]
   //值:number
   //指定輸出消息隊(duì)列的值
   
   log-msg-size() default[8192]
   //值:number
   //消息的最大長(zhǎng)度字節(jié)。這個(gè)長(zhǎng)度包括整個(gè)消息(數(shù)據(jù)結(jié)構(gòu)和單個(gè)字段)。可以設(shè)置的最大價(jià)值是268435456字節(jié)(256 mb)。信息使用IETF-syslog消息格式(RFC5424),一個(gè)SDATA字段的值的最大大小為64 kb。
   
   mark() default[1200]
   //值:number
   //mark-freq()方法是一個(gè)別名棄用mark()選項(xiàng)。這是保留兼容1.6.x syslog-ng版本。
   
   mark-freq() default[1200]
   //值:number[秒]
   //
   
   mark-mode()
   //值:file(), pipe(), unix-stream(), unix-dgram(), program()
   //mark-mode()選項(xiàng)可以設(shè)置以下目的驅(qū)動(dòng):file(), program(),unix-dgram(), unix-stream(), udp(), udp6(), tcp(), tcp6(), pipe(), syslog()在全局選項(xiàng)
   
   normalize-hostnames() default[no]
   //值:yes | no
   //啟用此選項(xiàng),syslog-ng 轉(zhuǎn)換主機(jī)名為小寫
   
   on-error() default[drop-message]
   //值:drop-message|drop-property|fallback-to-string|silently-drop-message|silently-drop-property|silently-fallback-to-string
   //控制類型轉(zhuǎn)換失敗時(shí)將會(huì)發(fā)生什么,syslog-ng大阪證交所不能將一些數(shù)據(jù)轉(zhuǎn)換成指定的類型。
   默認(rèn)情況下,syslog-ng丟棄整個(gè)消息和打印錯(cuò)誤日志。目前,value-pairs()方法使用的設(shè)置中的on-error()
   
   owner() default[root]
   //值:userid
   //默認(rèn)輸出文件的所有者。默認(rèn)情況下,syslog-ng改變?cè)L問文件的權(quán)限(例如/ dev/null)。0600根。禁用修改權(quán)限,使用這個(gè)選項(xiàng)-1
   
   perm() default[0600]
   //值:permission value
   //默認(rèn)輸出文件的權(quán)限。默認(rèn)情況下,syslog-ng改變?cè)L問文件的權(quán)限(例如/ dev/null)。0600根。禁用修改權(quán)限,使用這個(gè)選項(xiàng)-1
   
   proto-template() default[默認(rèn)使用協(xié)議的消息格式]
   //值:模板名
   //指定一個(gè)模板,協(xié)議(比如目的地(例如,network()和syslog())例如:
   recv-time-zone()
   template t_isostamp { template("$ISODATE $HOST $MSGHDR$MSG\n"); };
   options { proto-template(t_isostamp); };
   
   recv-time-zone() default[local timezone]
   //值:時(shí)區(qū)名稱,或時(shí)區(qū)偏移
   //指定接收消息的時(shí)區(qū)
   
   send-time-zone() default[local timezone]
   //值:時(shí)區(qū)名稱,或時(shí)區(qū)偏移
   //指定發(fā)送消息的時(shí)區(qū)
   
   stats-freq() default[600]
   //值:number
   //指定兩個(gè)數(shù)據(jù)之間的時(shí)間信息在幾秒鐘內(nèi)。統(tǒng)計(jì)數(shù)據(jù)由syslog-ng發(fā)送日志消息,包含統(tǒng)計(jì)數(shù)據(jù)日志消息。設(shè)置為0禁用統(tǒng)計(jì)信息。
   
   stats-level() default[0]
   //值:0123
   //指定數(shù)據(jù)的細(xì)節(jié)syslog-ng收集處理信息。
     0級(jí)只收集統(tǒng)計(jì)信息的來源和目的地
     1級(jí)包含不同的連接和日志文件的詳細(xì)信息,但有一個(gè)輕微的內(nèi)存開銷
     2級(jí)包含基于主機(jī)名的詳細(xì)統(tǒng)計(jì)數(shù)據(jù)。
     3級(jí)包含詳細(xì)的統(tǒng)計(jì)基礎(chǔ)設(shè)施等各種信息參數(shù),嚴(yán)重程度,或標(biāo)記。
	 
   stats-lifetime() default[10]
   //值:number (minutes)
   //控制頻率動(dòng)態(tài)計(jì)數(shù)器過期了。計(jì)時(shí)器是不準(zhǔn)確的,一些計(jì)時(shí)器可能住有點(diǎn)超過指定的時(shí)間。
   動(dòng)態(tài)計(jì)數(shù)器正在清理在指定時(shí)間間隔反復(fù)stats-lifetime(),而不是只在重新加載。這將減少使用的內(nèi)存動(dòng)態(tài)計(jì)數(shù)器。
   
   sync() or sync-freq() default[0]
   //值:number
   //flush-lines()的別名
   
   threaded() default[yes]
   //值:yes|no
   //使syslog-ng在多線程運(yùn)行模式時(shí)使用多個(gè)cpu。
   
   time-reap() deault[60]
   //值:number
   //在沒有消息前,到達(dá)多少秒,即關(guān)閉該文件的連接 
   
   time-reopen() default[60]
   //值:number
   //對(duì)于死連接,到達(dá)多少秒,會(huì)重新連接 
   
   time-sleep() default[0]
   //值:number
   //每次調(diào)用之間的等待時(shí)間以毫秒為單位的poll()迭代。
   
   time-zone() default[unspecified]
   //值:時(shí)區(qū)或時(shí)區(qū)偏移
   //轉(zhuǎn)換時(shí)間戳(以及所有日期相關(guān)的宏的時(shí)間戳)時(shí)區(qū),指定此選項(xiàng)。如果不設(shè)置這個(gè)選項(xiàng),那么使用原來的時(shí)區(qū)信息的消息。
   
   use-dns() default[yes]
   //值:yes, no, persist_only
   //啟用或禁用DNS的使用。persist_only選項(xiàng)嘗試在本地解析主機(jī)名從文件(例如/etc/hosts)。
   
   use-fqdn() default[no]
   //值:yes or no
   //添加完全限定域名而不是短主機(jī)名。這個(gè)選項(xiàng)可以指定,在全局范圍內(nèi),以及每個(gè)源。源的地方設(shè)置將覆蓋全局選項(xiàng)如果可用。
   
   use-rcptid() default[no]
   //值:yes | no
   //當(dāng)全局use-rcptid選項(xiàng)設(shè)置為yes,syslog-ng自動(dòng)分配一個(gè)獨(dú)一無二的接待每一個(gè)收到的消息ID。你可以訪問這個(gè)ID和在模板中使用它通過${RCPTID}
   接收ID是一個(gè)單調(diào)增加48比特位整數(shù),不能是零(如果1)計(jì)數(shù)器溢出,它重新啟動(dòng)。
   
  
 source <identifier> { source-driver(params); source-driver(params); ... };
 source 說明
    file() 
	//指定文件讀取消息
	例如:
	source s_file { file("/var/log/messages"); };
	file()選項(xiàng)說明:
		default-facility() //默認(rèn)設(shè)備
		#類型:設(shè)備字符串
		#默認(rèn):kernel
		
		default-priority() //默認(rèn)優(yōu)先級(jí)
		#類型:優(yōu)先級(jí)字符串
		#默認(rèn):空
		
		file() //讀取消息文件路徑
		#類型:文件名和路徑
		#默認(rèn):空
		
		encoding() //字符編碼
		#類型:字符
		#默認(rèn):空
		
		flags() //指定源的日志解析選項(xiàng)
		#類型:assume-utf8, empty-lines, expect-hostname, kernel,no-multi-line, no-parse, store-legacy-msghdr,syslog-protocol, validate-utf8
		#默認(rèn):空
		
		follow-freq() //定期檢查源的可讀性
		#類型:數(shù)字
		#默認(rèn):1
		
		keep-timestamp() //指定syslog-ng是否應(yīng)該接受發(fā)送應(yīng)用程序收到的時(shí)間戳或客戶端時(shí)間戳。
		#類型:yes | no
		#默認(rèn):yes
		
		log-fetch-limit() //信息獲取的最大數(shù)量從源的循環(huán)隊(duì)列中。
		#類型:數(shù)字
		#默認(rèn):10
		
		log-iw-size() //初始窗口的大小,這個(gè)值是在流控制時(shí)使用,此值必須大于log-fetch-limit
		#類型:數(shù)字
		#默認(rèn):100
		
		log-msg-size() //指定接收日志消息的最大大小,如果全局未指定,使用次選項(xiàng)
		#類型:數(shù)字
		#默認(rèn):1000
		
		multi-line-garbage() //處理多行消息,匹配或不匹配是否需要的消息
		#類型:正則表達(dá)式
		#默認(rèn):空字串
	
	    multi-line-mode() //多行消息模式
		#類型:indented|regexp
		#默認(rèn):空字串
	
	network()
	//指定TCP或UDP方式接收消息
	network()參數(shù)說明:
		encoding() //字符編碼
		#類型:字符
		#默認(rèn):空
		
		flags() //指定源的日志解析選項(xiàng)
		#類型:assume-utf8, empty-lines, expect-hostname, kernel,no-multi-line, no-parse, store-legacy-msghdr,syslog-protocol, validate-utf8
		#默認(rèn):空
		
		host-override() //取代${HOST}消息的參數(shù)字符串的一部分。
		#類型:字串
		#默認(rèn):空
		
		ip() or localip() //指定ip地址
		#類型:字串
		#默認(rèn):0.0.0.00
		
		ip-protocol() //使用ipv4或ipv6
		#類型:數(shù)字
		#默認(rèn):4
		
		ip-tos() //指定出站包的Type-of-Service
		#類型:數(shù)字
		#默認(rèn):0
		
		ip-ttl() //指定出站包的Type-of-Service
		#類型:數(shù)字
		#默認(rèn):0
		
		keep-hostname() //啟用或禁止主機(jī)名重寫
		#類型:yes | no
		#默認(rèn):no
		
		keep-alive() //使用啟用keepalive
		#類型:yes | no
		#默認(rèn):yes
		
				
		keep-timestamp() //指定syslog-ng是否應(yīng)該接受發(fā)送應(yīng)用程序收到的時(shí)間戳或客戶端時(shí)間戳。
		#類型:yes | no
		#默認(rèn):yes
		
		log-fetch-limit() //信息獲取的最大數(shù)量從源的循環(huán)隊(duì)列中。
		#類型:數(shù)字
		#默認(rèn):10
		
		log-iw-size() //初始窗口的大小,這個(gè)值是在流控制時(shí)使用,此值必須大于log-fetch-limit
		#類型:數(shù)字
		#默認(rèn):1000
		
		log-msg-size() //指定接收日志消息的最大大小,如果全局未指定,使用次選項(xiàng)
		#類型:數(shù)字
		#默認(rèn):8192
		
		max-connections() //指定最大并發(fā)連接數(shù)
		#類型:數(shù)字
		#默認(rèn):10
		
		pad-size() //指定塊大小
		#類型:數(shù)字
		#默認(rèn):0
		
		port() or localport() //指定綁定端口tcp默認(rèn)514,udp默認(rèn)601
		#類型:數(shù)字
		#默認(rèn):TCP : 601
		       UDP : 514
		
		program-override() //取代${PROGRAM}消息的參數(shù)字符串的一部分。
		#類型:字串
		#默認(rèn):空
		
		so-broadcast() //是否啟用消息廣播
		#類型:yes or no
		#默認(rèn):no
		
		so-keepalive() //保持消息,保持打開套接字,只對(duì)TCP and UNIX-stream 有效
		#類型:yes or no
		#默認(rèn):no
		
		so-rcvbuf() //指定套接字接收緩沖區(qū)的大小的字節(jié)
		#類型:數(shù)字
		#默認(rèn):0
		
		so-sndbuf() //指定套接字發(fā)送緩沖區(qū)的大小的字節(jié)
		#類型:數(shù)字
		#默認(rèn):0
		
		transport()
		#類型:assume-utf8
		#默認(rèn):TCP
		
		tls()
		#類型:tls選項(xiàng)
		#默認(rèn):n/a
		
		use-dns()
		#類型:yes, no, persist_only
		#默認(rèn):yes
		
		use-fqdn()
		#類型:yes or no
		#默認(rèn):no
		
	nodejs()
	//接收json消息從nodejs
	
	internal()
	//syslog-ng收集內(nèi)部產(chǎn)生的消息。
	例如:
	source s_local { internal(); };
	
	pacct()
	//讀取進(jìn)程統(tǒng)計(jì)消息
	
	pipe()
	//管道讀取消息
	
	program()
	//打開指定程序讀取消息
	
	syslog()
	//使用標(biāo)準(zhǔn)的syslog協(xié)議,監(jiān)聽讀入的消息
	
	tcp ()             
	 //指定的TCP端口接收日志消息 
	 
	udp ()             
	//指定的UDP端口接收日志消息 
	
	unix-dgram()
	//從指定的uninx套接字SOCK_DGRAM接收消息
	
	unix-stream()
	//從指定的uninx套接字SOCK_STREAM接收消息
	
destination <identifier> {destination-driver(params); destination-driver(params); ... };
destination 說明:
    amqp()
	//發(fā)布消息使用AMQP
	
	file()
	//寫日志到指定文件
	file()參數(shù)說明:
	
	graphite()
	//發(fā)送度量值到Graphite存儲(chǔ)time-series數(shù)據(jù).
	
	MongoDB()
	//發(fā)送消息到mongodb數(shù)據(jù)庫(kù)
	
	network()
	//發(fā)送消息到遠(yuǎn)程主機(jī),支持TCP、UDP
	
	pipe()
	//寫消息到管道
	
	program()
	//發(fā)消息到指定程序
	
	redis()
	//發(fā)送消息使用鍵值對(duì)存儲(chǔ)到redis
	
	smtp()
	//發(fā)送email消息到指定的接收者
	
	syslog()
	//發(fā)送消息到指定的遠(yuǎn)程主機(jī),使用syslog協(xié)議
	
	tcp()
	//發(fā)送消息到遠(yuǎn)程主機(jī),通過指定的TCP端口
	
	UDP()
	//發(fā)送消息到遠(yuǎn)程主機(jī),通過指定的UDP端口
	
	unix-dgram()
	//發(fā)送消息到指定的unix套接字文件SOCK_DGRAM
	
	unix-stream()
	//發(fā)送消息到指定的unix套接字文件SOCK_STREAM
	
	usertty()
	//發(fā)送消息到指定的終端用戶,如果用戶在登錄狀態(tài)
	
filter <identifier> { <filter_type>("<filter_expression>"); };
fileter 使用的計(jì)算操作符:
   數(shù)字    字符串操作    含義
    == 		eq          等于
    != 		ne          不等于
    > 		gt          大于
	< 		lt 			小于
	>= 		ge 			大于等于
	=< 		le 			小于等于

filter方法說明:
    facility()
    //基于過濾消息發(fā)送功能。
	數(shù)字   設(shè)備名     含義
	0 		kern      內(nèi)核消息
	1 		user 	  用戶相關(guān)消息
	2 		mail 	  郵件相關(guān)
	3 		daemon    系統(tǒng)相關(guān)
	4 		auth      認(rèn)證相關(guān)
	5 		syslog    syslog消息
	6 		lpr       打印機(jī)相關(guān)
	7 		news      網(wǎng)絡(luò)新聞相關(guān)
	8 		uucp      UUCP相關(guān)
	9 		cron      計(jì)劃任務(wù)相關(guān)
	10 		authpriv  權(quán)限,授權(quán)相關(guān)的
	11 		ftp 	  ftp相關(guān)
	12 		ntp       NTP相關(guān)
	13 		security  安全相關(guān)的,與auth 類似 
	14 		console   日志警告
	15 		solaris-cron clock daemon
	16-23 	local0..local7 在本地使用的設(shè)備(local0-local7)
	例如:
	facility(user)
	facility(1)
	facility(local0..local5)
	
	
	filter()
	//調(diào)用另一個(gè)filter方法
	
	host()
	//基于過濾消息發(fā)送主機(jī)。
	
	inlist() 
	//基于黑白名單過濾
	in-list("</path/to/file.list>", value("<field-to-filter>"));
	例如:
	/etc/syslog-ng/programlist.list
	kernel
	sshd
	sudo
	filter f_whitelist { in-list("/etc/syslog-ng/programlist.list", value("PROGRAM")); };

	level() or priority()
	//基于等級(jí)或優(yōu)先級(jí)過濾
	例如:
	level(warning)
	level(err..emerg)
	
	match()
	//使用正則表達(dá)式根據(jù)指定的標(biāo)題或內(nèi)容過濾消息字段。
	
	message()
	//使用一個(gè)正則表達(dá)式基于內(nèi)容過濾消息。
	
	netmask()
	//基于過濾消息發(fā)送主機(jī)的IP地址。
	
	program()
	//根據(jù)發(fā)送應(yīng)用程序過濾消息。
	
	source()
	//選擇指定syslog-ng OSE的消息源語句。
	
	tags()
	//選擇消息指定的標(biāo)簽

4.配置syslog-ng

配置收集用戶操作日志

192.168.1.87(日志操作)

192.168.1.88(日志收集)

4.1.logger命令說明:

   logger一個(gè)shell命令接口,往系統(tǒng)寫日志

   日志的級(jí)別分為七級(jí),從緊急程度由高到底:

emerg 系統(tǒng)已經(jīng)不可用,級(jí)別為緊急 

alert 警報(bào),需要立即處理和解決 

crit 既將發(fā)生,得需要預(yù)防。事件就要發(fā)生 

warnig 警告 

err 錯(cuò)誤信息,普通的錯(cuò)誤信息 

notice 提醒信息,很重要的信息 

info 通知信息,屬于一般信息 

debug 這是調(diào)試類信息

   logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...]
   -i 逐行記錄logger的進(jìn)程ID
   -s 記錄信息到標(biāo)準(zhǔn)錯(cuò)誤,同系統(tǒng)日志一起
   -f 指定寫入的文件
   -p pri 輸入消息的特定優(yōu)先級(jí). 優(yōu)先級(jí)可以是自定義的數(shù)值或者諸如 “facility.level” 的格式. 舉例: “-p local3.info” local3 facility這個(gè)設(shè)備的消息級(jí)別為info. 默認(rèn)是 “user.notice.”
   -t 每行記錄一個(gè)指定的標(biāo)志
   -u 以特定的socket代替內(nèi)嵌系統(tǒng)常規(guī)工作
   -d 使用一個(gè)數(shù)據(jù)進(jìn)程代替一個(gè)流連接到這個(gè)socket.
   — 結(jié)束參數(shù)列表. 這個(gè)允許消息以一個(gè)“-”開始
   message 寫入log文件的內(nèi)容消息,可以與-f配合使用
   logger 以0退出表示成功, 大于0表示失敗.

4.2.在1.87上配置操作日志記錄

4.2.1.配置系統(tǒng)收集環(huán)境

   vim /etc/bashrc 
	 # Only display echos from profile.d scripts if we are no login shell
    # and interactive - otherwise just process them to set envvars
    for i in /etc/profile.d/*.sh; do
        if [ -r "$i" ]; then
            if [ "$PS1" ]; then
                . "$i"
            else
                . "$i" >/dev/null 2>&1
            fi
        fi
    done

		unset i
		unset pathmunge
	fi
	# vim:ts=4:sw=4
   
    在/etc/profile.d/下增加腳本
	cd /etc/profile.d/
	vim oprate_cmd.sh
	#!/bin/bash
	declare -r USER_ALL=`/usr/bin/who am i`
	USER_TTY=`echo $USER_ALL | awk '{print $2}'`
	REMOUTE_IP=`echo $USER_ALL | awk '{print $NF}' | awk -F'[()]+' '{print $2}'`
	REMOUTE_USER=`echo $USER_ALL | awk '{print $1}'`

	if [ $USER == root ]; then
			declare -r PROMT="#"
	else
			declare -r PROMT="$"
	fi

	declare -r REAL_USER=$USER

	PROC_ID=$(pstree -p | grep $$ | awk -F'[()]+' '{print $4}')
	export PROMPT_COMMAND='{ MSG=$(history 1 | { read x y; echo $y; });logger "PPID=$PROC_ID" "REMOUTE_USER=$REMOUTE_USER" "tty=$USER_TTY" "REMOUTE_IP=$REMOUTE_IP" "[$REAL_USER@$HOSTNAME `pwd`]"$PROMT "$MSG"; }'
	
	加載最新配置:
	source /etc/bashrc

4.2.2.配置syslog-ng收集配置文件:

#############################################################################
## Default syslog-ng.conf file which collects all local logs into a
## single file called /var/log/messages.
##
@version: 3.3
@include "scl.conf"

options {
    flush_lines(1);
    flush-timeout(100);
    log-fifo-size(10000);
    chain-hostnames(no);
    use-dns(no);
    #use-dns(persist_only);
    use-fqdn(no);
    create-dirs(no);
    keep-timestamp(yes);
};

source s_file {
     unix-stream ("/dev/log");
     internal();
};

filter sys_filter {
      not match('ansible-command' value('MESSAGE')) and not match('logrotate' value('MESSAGE')) and not match('rsyncd' value('MESSAGE')) and not match('CROND' value('MESSAGE')) and and not match('syslog-ng' value('MESSAGE')) and and not match ('sshd' value('MESSAGE'));
      not facility(mail,authpriv,cron);
};

destination d_file {
        file("/app/local/log/cmd_track.log");
};

destination d_remote {
    tcp("10.10.1.1" port(514));
};

log {
        source(s_file);
        filter(sys_filter);
        destination(d_file);
};

log {
        source(s_file);
        filter(sys_filter);
        destination(d_remote);
};

4.2.3.錯(cuò)誤解決

# /etc/init.d/syslog-ng start
    Starting syslog-ng: /usr/local/syslog-ng/sbin/syslog-ng: symbol lookup error: /usr/local/syslog-ng/lib/libsyslog-ng-3.6.so.0: undefined symbol: g_malloc_n
                                                           [FAILED]

 yum 報(bào)錯(cuò):

[root@localhost ~]# yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
   /usr/lib64/python2.6/site-packages/_sqlitecache.so: undefined symbol: g_assertion_message_expr
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python, which is:
2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]
If you cannot solve this problem yourself, please go to
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

glib2 庫(kù)版本與當(dāng)前的yum 和 pyton 版本不兼容

重新安裝glibc

tar -xf glib-2.28.8.tar.xz
cd glib-2.28.8
./configure
make
make install

啟動(dòng)syslog-ng

/etc/init.d/syslog-ng start

syslog-ng 腳本內(nèi)容:

#!/bin/bash 
	#  
	# chkconfig: -  60 27 
	# description: syslog-ng SysV script.  
	. /etc/rc.d/init.d/functions 
	 
	syslog_ng=/usr/local/syslog-ng/sbin/syslog-ng 
	prog=syslog-ng 
	pidfile=/usr/local/syslog-ng/var/syslog-ng.pid 
	lockfile=/usr/local/syslog-ng/var/syslog-ng.lock 
	RETVAL=0 
	STOP_TIMEOUT=${STOP_TIMEOUT-10} 
	 
	start() { 
			echo -n $"Starting $prog: " 
			daemon --pidfile=$pidfile $syslog_ng $OPTIONS 
			RETVAL=$? 
			echo 
			[ $RETVAL = 0 ] && touch ${lockfile} 
			return $RETVAL 
	} 
	 
	stop() { 
		echo -n $"Stopping $prog: " 
		killproc -p $pidfile -d $STOP_TIMEOUT $syslog_ng 
		RETVAL=$? 
		echo 
		[ $RETVAL = 0 ] && rm -f $lockfile $pidfile 
	} 
	 
	case "$1" in 
		  start) 
			start 
			;; 
		  stop) 
			stop 
			;; 
		  status) 
				status -p $pidfile $syslog_ng 
			RETVAL=$? 
			;; 
		  restart) 
			stop 
			start 
			;; 
	  *) 
		echo $"Usage: $prog {start|stop|restart|status}" 
		RETVAL=2 
	esac 
	exit $RETVAL

4.2.4.查看收集的日志:

tail /data/log/execute_log 
Jun 14 16:21:41 qmcent3 ckl: PPID=22668 REMOUTE_USER=ckl tty=pts/2 REMOUTE_IP=192.168.1.105 [ckl@qmcent3.com /home/ckl]$ sudo -s
Jun 14 16:21:43 qmcent3 ckl: PPID=22668 REMOUTE_USER=ckl tty=pts/2 REMOUTE_IP=192.168.1.105 [ckl@qmcent3.com /home/ckl]$ ls
Jun 14 16:21:44 qmcent3 ckl: PPID=22668 REMOUTE_USER=ckl tty=pts/2 REMOUTE_IP=192.168.1.105 [ckl@qmcent3.com /home/ckl]$ cd /root/
Jun 14 16:21:44 qmcent3 ckl: PPID=22668 REMOUTE_USER=ckl tty=pts/2 REMOUTE_IP=192.168.1.105 [ckl@qmcent3.com /home/ckl]$ ls
Jun 14 16:21:46 qmcent3 ckl: PPID=22668 REMOUTE_USER=ckl tty=pts/2 REMOUTE_IP=192.168.1.105 [ckl@qmcent3.com /data]$ cd /data/
Jun 14 16:21:46 qmcent3 ckl: PPID=22668 REMOUTE_USER=ckl tty=pts/2 REMOUTE_IP=192.168.1.105 [ckl@qmcent3.com /data]$ ls

4.3.在1.88(收集服務(wù)器上)上配置

安裝syslog-ng 同上

配置syslog-ng:

 cat /usr/local/syslog-ng/etc/syslog-ng.conf 
#############################################################################
# Default syslog-ng.conf file which collects all local logs into a
# single file called /var/log/messages.
#

@version: 3.6
@include "scl.conf"

options {
	flush_lines(10);
	flush-timeout(5000);
	log-fifo-size(100000);
	chain-hostnames(no);
	use-dns(persist_only);
	use-fqdn(no);
	create-dirs(no);
	keep-timestamp(yes);
};

source s_remote {
   tcp(ip(0.0.0.0) port(514) max-connections(1000));
};

destination d_file {
		file("/data/excute_log/cmd_$YEAR$MONTH$DAY.log");
};

log {
		source(s_remote);
		destination(d_file);
};

啟動(dòng)服務(wù):

/etc/init.d/syslog-ng start
# netstat -ntpl | grep syslog
tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      16329/syslog-ng

查看收集的日志:

    # cd /data/excute_log/
# ls
cmd_20160614.log

5.安裝loganalyzer及收集操作日志

5.1.安裝loganalyzr

   tar -xf loganalyzer-3.6.6.tar.gz -C /data/ckl-frontend/
   cd /data/ckl-frontend/
   rsync -a loganalyzer-3.6.6/src/* loganalyzer/
   創(chuàng)建config.php
   touch config.php
   chmod 666 config.php

點(diǎn)擊here

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

next

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

確認(rèn)config.php存在,權(quán)限666

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

配置數(shù)據(jù)庫(kù):自定義的數(shù)據(jù)庫(kù)連接方式

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

創(chuàng)建數(shù)據(jù)庫(kù):

syslog-ng@localhost:(none) 05:34:46 >create database loganalyzer;

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

創(chuàng)建用戶:

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

選擇源:

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

完成

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

5.2.配置nginx

   配置nginx訪問路徑指向loganalyzer/

   此處不再做說明

   

5.3.數(shù)據(jù)庫(kù)配置

5.3.1.插入數(shù)據(jù)庫(kù)出事用戶

MySQL5.6安裝完沒有用戶,插入一個(gè)用戶

insert into user(Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,ssl_cipher,x509_issuer,x509_subject) values('localhost','syslog-ng',PASSWORD('629893'),'Y','Y','Y','Y','Y','Y','XX','XX','XX');

安裝完成loganalyzer后無法登錄,提示沒有用戶,必須加入一個(gè)用戶:

insert into logcon_users values(1,'syslog-ng','54e4602701a3ccdae80bf951ae2c69fd',1,1,2016);

創(chuàng)建收集日志的表,必須是如下格式:

CREATE TABLE SystemEvents 
( 
        ID int unsigned not null auto_increment primary key, 
        CustomerID bigint, 
        ReceivedAt datetime NULL, 
        DeviceReportedTime datetime NULL, 
        Facility smallint NULL, 
        Priority smallint NULL, 
        FromHost varchar(60) NULL, 
        Message text, 
        NTSeverity int NULL, 
        Importance int NULL, 
        EventSource varchar(60), 
        EventUser varchar(60) NULL, 
        EventCategory int NULL, 
        EventID int NULL, 
        EventBinaryData text NULL, 
        MaxAvailable int NULL, 
        CurrUsage int NULL, 
        MinUsage int NULL, 
        MaxUsage int NULL, 
        InfoUnitID int NULL , 
        SysLogTag varchar(60), 
        EventLogType varchar(60), 
        GenericFileName VarChar(60), 
        SystemID int NULL,
		processid varchar(60) NOT NULL DEFAULT '1',
		checksum int(11) UNSIGNED NOT NULL DEFAULT '0'
);

注意:指定的收集表必須是以上格式,配置關(guān)聯(lián)如下:

vim config.php 
....
$CFG['Sources']['Source1']['ID'] = 'Source1';
$CFG['Sources']['Source1']['Name'] = 'ckl log';
$CFG['Sources']['Source1']['ViewID'] = 'SYSLOG';
$CFG['Sources']['Source1']['SourceType'] = SOURCE_DB;
$CFG['Sources']['Source1']['DBTableType'] = 'monitorware';
$CFG['Sources']['Source1']['DBType'] = DB_MYSQL;
$CFG['Sources']['Source1']['DBServer'] = 'localhost';
$CFG['Sources']['Source1']['DBName'] = 'loganalyzer';
$CFG['Sources']['Source1']['DBUser'] = 'syslog-ng';
$CFG['Sources']['Source1']['DBPassword'] = '629893';
$CFG['Sources']['Source1']['DBTableName'] = 'SystemEvents';  //指定的表
//$CFG['Sources']['Source1']['DBTableName'] = 'systemevents';
$CFG['Sources']['Source1']['DBEnableRowCounting'] = false;
....

5.4.配置syslog-ng收集數(shù)據(jù)到mysql

    創(chuàng)建管道文件:

mkfifo /var/log/mysql.pipe

修改配置文件:

vim /usr/local/syslog-ng/etc/syslog-ng.conf
@version:3.3
@include "scl.conf"

# syslog-ng configuration file.
#
# This should behave pretty much like the original syslog on RedHat. But
# it could be configured a lot smarter.
#
# See syslog-ng(8) and syslog-ng.conf(5) for more information.
#

options {
		flush_lines (1);
		flush-timeout(100);
		time_reopen (10);
		log_fifo_size (1000000000);
		chain_hostnames (no);
		use_dns (no);
		use_fqdn (no);
		create_dirs (no);
		keep_hostname (yes);
		stats_freq(600);
		log_msg_size(65536);
};

source s_sys {
		file ("/proc/kmsg" program_override("kernel: "));
		unix-stream ("/dev/log");
		internal();
};

source cmd_src {
		tcp(
		 ip(0.0.0.0) 
		 port(514) 
		 log-fetch-limit(12800)
		 log-iw-size(1000)
		 max-connections(100000000)
		 so-rcvbuf(12468)
		);
};

destination cmd_dst {
		file("/app/local/log/oplog/cmdrecord/cmdrecord-$YEAR$MONTH$DAY.log");
};

log { source(cmd_src); 
	  filter(sys_filter);
	  destination(cmd_dst); 
};


#sys filter
filter sys_filter {
   not match('qmuser' value('MESSAGE')) and not match('logrotate' value('MESSAGE')) and not match('rsyncd' value('MESSAGE')) and not match('CROND' value('CROND')) and not match('syslog-ng' value('MESSAGE')) and not match ("sshd" value("MESSAGE"));
  not facility(mail,authpriv,cron);
};


#destination mysql
destination d_mysql {
		 program("/usr/bin/mysql -usyslog-ng -p123245 loganalyzer < /var/log/mysql.pipe");
		 pipe("/var/log/mysql.pipe"
		 template("INSERT INTO SystemEvents(EventID,FromHost,SysLogTag,Facility,EventUser,EventSource,Message,Priority) VALUES('1','$hostname','$TAG','1','$REMOTE_USER','$HOST','$MSG','5');\n")
template-escape(no));
};


log {
		source(cmd_src);
		filter(sys_filter);
		destination(d_mysql);
};

啟動(dòng)進(jìn)程:

/etc/init.d/syslog-ng restart

查看數(shù)據(jù)收集:

syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志

警告:

/etc/init.d/syslog-ng restart
WARNING: the match() filter without the use of the value() option is deprecated and hinders performance, please update your configuration;
start syslog-ng:WARNING: the match() filter without the use of the value() option is deprecated and hinders performance, please update your configuration;

解決:

match 使用如下語法:
filter f_carriage_return {match("\x0d" value ("MESSAGE"));};

錯(cuò)誤:

[syslog-ng] Broken TCP connection

解決方法:

Yes, it is. You need to increase log_fetch_limit() and log_fifo_size() 
in this case. Keep your mind the log_fifo_size must be larger than the 
log_fetch_limit.

鏈接地址:

https://lists.balabit.hu/pipermail/syslog-ng/2010-January/013835.html

https://tools.ietf.org/html/rfc5424#page-13

新聞名稱:syslog-ng+loganalyzer(非常詳細(xì)配置文件)部署收集操作日志
轉(zhuǎn)載來源:http://www.muchs.cn/article24/ghgice.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)公司、微信小程序、動(dòng)態(tài)網(wǎng)站電子商務(wù)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司