linux下的日誌採集---rsyslog
一、linux日誌檔案及日誌分析
1、linux日誌簡介
Linux系統擁有非常靈活和強大的日誌功能,可以儲存幾乎所有的操作記錄,並可以從中檢索出我們需要的資訊。
大部分Linux發行版預設的日誌守護程序為 syslog(後續升級rsyslog),位於 /etc/syslog 或 /etc/syslogd,預設配置檔案為 /etc/syslog.conf,任何希望生成日誌的程式都可以向 syslog 傳送資訊。
Linux系統核心和許多程式會產生各種錯誤資訊、警告資訊和其他的提示資訊,這些資訊對管理員瞭解系統的執行狀態是非常有用的,所以應該把它們寫到日誌檔案中去。完成這個過程的程式就是syslog。syslog可以根據日誌的類別和優先順序將日誌儲存到不同的檔案中。例如,為了方便查閱,可以把核心資訊與其他資訊分開,單獨儲存到一個獨立的日誌檔案中。預設配置下,日誌檔案通常都儲存在“/var/log”目錄下。
2、日誌型別
下面是常見的日誌型別,但並不是所有的Linux發行版都包含這些型別:
型別 | 說明 |
---|---|
auth | 使用者認證時產生的日誌,如login命令、su命令。 |
authpriv | 與 auth 類似,但是隻能被特定使用者檢視。 |
console | 針對系統控制檯的訊息。 |
cron | 系統定期執行計劃任務時產生的日誌。 |
daemon | 某些守護程序產生的日誌。 |
ftp | FTP服務。http://write.blog.csdn.net/postedit/72920400 |
kern | 系統核心訊息。 |
local0.local7 | 由自定義程式使用。 |
lpr | 與印表機活動有關。 |
郵件日誌。 | |
mark | 產生時間戳。系統每隔一段時間向日志文件中輸出當前時間,每行的格式類似於 May 26 11:17:09 rs2 -- MARK --,可以由此推斷系統發生故障的大概時間。 |
news | 網路新聞傳輸協議(nntp)產生的訊息。 |
ntp | 網路時間協議(ntp)產生的訊息。 |
user | 使用者程序。 |
uucp | UUCP子系統 |
所有的系統應用都會在/var/log 目錄下建立日誌檔案,或建立子目錄再建立日誌檔案。如:
我們可以粗略的分為兩類日誌:系統日誌和應用日誌,系統日誌主要存放系統內建程式或系統核心之類的日誌資訊如alternatives.log
、btmp
等,應用日誌主要是安裝的第三方應用產生的日誌如tomcat7
、apache2
等。
檔案目錄/日誌名稱 | 記錄資訊 |
---|---|
/var/log/alternatives.log | 系統的一些更新替代資訊記錄,如系統軟體包升級更新,記錄了程式作用,日期,命令,成功與否的返回碼 |
/var/log/apport.log | 應用程式崩潰資訊記錄,暫時這方面日誌資訊 |
/var/log/apt/history.log | 使用apt-get安裝解除安裝軟體的資訊記錄,包含時間、安裝命令、版本資訊、結束時間等 |
/var/log/apt/term.log | 使用apt-get時的具體操作,如 package 的下載開啟等 |
/var/log/auth.log | 登入認證的資訊記錄,包含:日期與 ip 地址的來源以及登陸的使用者與工具 |
/var/log/boot.log | 系統啟動時的程式服務的日誌資訊 |
/var/log/btmp | 錯誤登陸的資訊記錄 |
/var/log/Consolekit/history | 控制檯的資訊記錄 |
/var/log/dist-upgrade | dist-upgrade這種更新方式的資訊記錄 |
/var/log/dmesg | 啟動時,顯示螢幕上核心緩衝資訊,與硬體有關的資訊 |
/var/log/dpkg.log | dpkg命令管理包的日誌。 |
/var/log/faillog | 使用者登入失敗詳細資訊記錄 |
/var/log/fontconfig.log | 與字型配置有關的資訊記錄 |
/var/log/kern.log | 核心產生的資訊記錄,在自己修改核心時有很大幫助 |
/var/log/lastlog | 使用者的最近資訊記錄 |
/var/log/wtmp | 登入資訊的記錄。wtmp可以找出誰正在登陸進入系統,誰使用命令顯示這個檔案或資訊等 |
/var/log/syslog | 系統資訊記錄 |
二、rsyslog日誌採集
1、rsyslog介紹
linux下的日誌是如何產生的,從上面可以看出大部分的日誌資訊似乎格式都都很類似,並且為什麼都會出現在這個資料夾中。
這樣的實現可以通過兩種方式,一種是由軟體開發商自己來自定義日誌格式然後指定輸出日誌位置,還有一種方式就是 Linux 提供的日誌服務程式,而我們這裡系統日誌是通過 syslog 來實現,提供日誌管理服務。
syslog 是一個系統日誌記錄程式,在早期的大部分 Linux 發行版都是內建 syslog,讓其作為系統的預設日誌收集工具,雖然時代的進步與發展,syslog 已經年老體衰跟不上時代的需求,所以他被 rsyslog 所代替了,較新的Ubuntu、Fedora 等等都是預設使用 rsyslog 作為系統的日誌收集工具
rsyslog的全稱是 rocket-fast system for log,它提供了高效能,高安全功能和模組化設計。rsyslog能夠接受從各種各樣的來源,將其輸入,輸出的結果到不同的目的地。rsyslog可以提供超過每秒一百萬條訊息給目標檔案,
這樣能實時收集日誌資訊的程式都會有其守護程序如 rsyslog 的守護程序便是 rsyslogd
rsyslog的特性:1.多執行緒
2.支援加密協議:ssl,tls,relp
3.mysql、oracle、postgreSQL
4.過濾日誌內容的部分資訊
5.配置日誌輸出格式
6.等等..
2、rsyslog配置
1)首先檢視一下當前linux系統中rsyslog是哪個版本,
rsyslogd -version
[root@master ~]# rsyslogd -version
rsyslogd 5.8.10, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
See http://www.rsyslog.com for more information.
如果rsyslog不存在,安裝rsyslog
centos:yum -y rsyslog
debian:apt-get install rsyslog
2)rsyslog配置檔案
配置檔案/etc/rsyslog.conf大概分為三個部分:MODULES、GLOBAL DIRECTIVES、RULES
#MODULES
這個部分是針對接收配置的,主要是指定接收日誌的協議和埠。若要配置日誌伺服器,則需要將相應的配置項去掉註釋。
#GLOBAL DIRECTIVES
這個部分主要用來配置模板,模板的作用是指定你希望在日誌檔案中儲存的日誌格式。
預設配置為: # Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
debian7預設的配置檔案
#################
#### MODULES ####
#################
$ModLoad imuxsock #裝載imuxsock模組
$ModLoad imklog #裝載imklog模組
*.* @192.168.2.72:514
###########################
#### GLOBAL DIRECTIVES ####
###########################
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
###############
#### RULES ####
###############
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
*.emerg :omusrmsg:*
daemon.*;mail.*;\
news.err;\
*.=debug;*.=info;\
*.=notice;*.=warn |/dev/xconsole
3、rsyslog工作流程
簡單的來說:首先資料通過輸入模組進入主佇列,然後經由過濾條件分解到各個子佇列,最後交給輸出模組。
4、日誌採集案例
1)Apache日誌配置遠端Syslog採集
第一步:初始化日誌採集環境
先確保系統中的/var/spool/rsyslog 目錄已存在:
mkdir -v /var/spool/rsyslog
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then
chown -R syslog:adm /var/spool/rsyslog
fi
第二步:建立Apahce日誌檔案採集配置
新建Rsyslog的子配置檔案,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含這個目錄下的子配置檔案:
vim /etc/rsyslog.d/apache-biglog.conf
複製以下內容到apache-biglog.conf,注意註釋部分的修改:
$ModLoad imfile
$InputFilePollInterval 10
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup adm
## Apache訪問日誌檔案路徑,根據實際情況修改:
$InputFileName /var/log/apache2/access.log
$InputFileTag apache-access:
$InputFileStateFile stat-apache-access
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Apache錯誤日誌檔案路徑,根據實際情況修改:
$InputFileName /var/log/apache2/error.log
$InputFileTag apache-error:
$InputFileStateFile stat-apache-error
$InputFileSeverity error
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## 指定日誌格式模板:
$template BiglogFormatApache,"%msg%\n"
## 注意syslog日誌伺服器接收地址,根據實際情況修改:
if $programname == 'apache-access' then @10.x.x.x:514;BiglogFormatApache
if $programname == 'apache-access' then ~
if $programname == 'apache-error' then @10.x.x.x:514;BiglogFormatApache
if $programname == 'apache-error' then ~
注:通過Rsyslog配置日誌接收端的時候,如上示例@10.x.x.x:514,用於指定接收日誌的伺服器的協議、IP地址和埠號。使用@代表走UDP協議,使用@@代表走TCP協議,冒號後面的514代表接收埠。
第三步:重啟Rsyslog服務,日誌採集開始工作
service rsyslog restart
此時可以通過觀察系統中的Rsyslog日誌,確定是否正常工作。
cat /var/log/messages |grep rsyslog
2)Linux系統日誌配置遠端Syslog採集
第一步:建立Liunx系統日誌採集配置
新建Rsyslog的子配置檔案,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含這個目錄下的子配置檔案:
vim /etc/rsyslog.d/linux-biglog.conf
複製以下內容到linux-biglog.conf,注意註釋部分的修改:
## 定義日誌格式模板:
$template BiglogFormatLinux,"%msg%\n"
## 注意syslog日誌伺服器接收地址,根據實際情況修改:
*.* @10.x.x.x:514;BiglogFormatLinux
注:通過Rsyslog配置日誌接收端的時候,如上示例@10.x.x.x:514,用於指定接收日誌的伺服器的協議、IP地址和埠號。使用@代表走UDP協議,使用@@代表走TCP協議,冒號後面的514代表接收埠。
第二步:重啟Rsyslog服務,日誌採集開始工作
service rsyslog restart
此時可以通過觀察系統中的Rsyslog日誌,確定是否正常工作。
cat /var/log/messages |grep rsyslog
3)Tomcat日誌配置遠端Syslog採集
第一步:初始化日誌採集環境
先確保系統中的/var/spool/rsyslog 目錄已存在:
mkdir -v /var/spool/rsyslog
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then
chown -R syslog:adm /var/spool/rsyslog
fi
第二步:建立Tomcat日誌檔案採集配置
新建Rsyslog的子配置檔案,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含這個目錄下的子配置檔案:
vim /etc/rsyslog.d/tomcat-biglog.conf
複製以下內容到tomcat-biglog.conf,注意註釋部分的修改:
$ModLoad imfile
$InputFilePollInterval 10
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup adm
## 指定日誌格式模板:
$template BiglogFormatTomcat,"%msg%\n"
## Tomcat的catalina.log路徑,根據實際情況修改:
$InputFileName /var/log/tomcat6/catalina.log
$InputFileTag catalina-log
$InputFileStateFile stat-catalina-log
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的catalina.out路徑,根據實際情況修改:
$InputFileName /var/log/tomcat6/catalina.out
$InputFileTag catalina-out
$InputFileStateFile stat-catalina-out
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的host-manager.log路徑,根據實際情況修改:
$InputFileName /var/log/tomcat6/host-manager.log
$InputFileTag host-manager
$InputFileStateFile stat-host-manager
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的initd.log路徑,根據實際情況修改:
$InputFileName /var/log/tomcat6/initd.log
$InputFileTag initd
$InputFileStateFile stat-initd
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的localhost.log路徑,根據實際情況修改:
$InputFileName /var/log/tomcat6/localhost.log
$InputFileTag localhost-log
$InputFileStateFile stat-localhost-log
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的manager.log路徑,根據實際情況修改:
$InputFileName /var/log/tomcat6/manager.log
$InputFileTag manager
$InputFileStateFile stat-manager
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## 注意syslog日誌伺服器接收地址,根據實際情況修改:
if $programname == 'catalina-log' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'catalina-log' then ~
if $programname == 'catalina-out' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'catalina-out' then ~
if $programname == 'host-manager' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'host-manager' then ~
if $programname == 'initd' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'initd' then ~
if $programname == 'localhost-log' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'localhost-log' then ~
if $programname == 'manager' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'manager' then ~
注:通過Rsyslog配置日誌接收端的時候,如上示例@10.x.x.x:514,用於指定接收日誌的伺服器的協議、IP地址和埠號。使用@代表走UDP協議,使用@@代表走TCP協議,冒號後面的514代表接收埠。
第三步:重啟Rsyslog服務,日誌採集開始工作
service rsyslog restart
此時可以通過觀察系統中的Rsyslog日誌,確定是否正常工作。
cat /var/log/messages |grep rsyslog
相關推薦
linux下的日誌採集---rsyslog
一、linux日誌檔案及日誌分析 1、linux日誌簡介 Linux系統擁有非常靈活和強大的日誌功能,可以儲存幾乎所有的操作記錄,並可以從中檢索出我們需要的資訊。 大部分Linux發行版預設的日誌守護程序為 syslog(後續升級rsyslog),位於 /e
Linux下日誌檔案過大解決方案
很多Linux伺服器裡的應用程式都是無間斷的輸出日誌,這對於伺服器的硬碟是一個很大的考驗。良許之前也分享過一篇文章,介紹如何讓應用程式在後臺執行: linux後臺執行命令:&與nohup的用法 通過以上方法,應用程式的日誌會一直輸出到日誌檔案myout.txt裡,這個檔案也會不斷的增
如何實時檢視Linux下日誌
以下以Tomcat為例子,其他WEB伺服器目錄自己靈活修改即可: 1、先切換到:cd usr/local/tomcat5/logs 2、tail -f catalina.out 3、這樣執行時就可以實時檢視執行日誌了 Ctrl+c 是退出tail命令。 順便講一下l
Linux集中日誌伺服器rsyslog
Linux上通常可以通過rsyslog來實現系統日誌的集中管理,這種情況下通常會有一個日誌伺服器,然後每個機器配置自己日誌通過rsyslog來寫到遠端的日誌伺服器上。 這裡假定有兩臺伺服器,一臺作為系統日誌的伺服器(比如機器名logmaster),另一臺作為日
Linux的rsyslog日誌採集及journald的日誌
一、rsyslog日誌 Linux核心由很多的子系統組成,包含網路、檔案訪問、記憶體管理等,子系統需要給使用者傳送一些訊息,這些訊息內容包括訊息的重要來源以及重要性等,所有這些子系統都要把訊息傳從到一個可以維護的
linux下awk日誌分析
linux 接口 記錄 video 文本命令數據分析假設線上倒出的接口訪問日誌有上百行,該日誌的記錄格式如下:/data1/www/logs/archives/170524/170524.v6.weibo.com_10.72.13.113.0.cn.gz:v6.weibo.com 123.12
Linux下如何查看tomcat是否啟動/系統日誌等
base path 系統 後臺 pst 不知道 size class boot 1、在Linux系統下,重啟Tomcat使用命令操作的! 方法一: 首先,進入Tomcat下的bin目錄 cd /usr/local/tomcat/bin 使用Tomcat關閉
Linux下 分割日誌大文件
日誌 切分 分割 Linux下分割日誌有兩種常用命令 ddsplit(推薦使用)1.dd:作用是用指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換。參數註釋:if=filename:輸入的文件名of=finename:輸出的文件名bs=bytes:一次讀寫的字節數,默認是512bytessk
linux下查看tomcat的啟動日誌
輸入 遠程 mst star 進入 啟動tomcat 服務 mod 日誌 一般服務器上項目出現問題的時候需要查看tomcat下的啟動日誌,方法如下: 1.win+r 在運行中輸入mstsc 用遠程登錄客戶端登錄linux 2.打開SSH Secure Shell Cli
linux下 tomcat 日誌亂碼/中文鏈接404
sysconf pts body linu bsp uri 引用 設置 red 1 日誌亂碼: JDK引用的設置 Java引用參數添加”-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8” 將上面參數添加到Catalina.sh中J
Linux下Shell命令的輸出信息同時顯示在屏幕和保存到日誌文件中
blog inux -a 輸出 輸出內容 使用 col 文件中 信息 #直接覆蓋日誌文件 ls -l | tee ./t.log #將輸出內容附加到日誌文件 ls -l | tee -a ./t.log 使用的是tee命令Linux下She
如何在Linux下優雅的查詢日誌
lin 鍵盤 htm 線上 comm 發現 In 操作日誌 示例 做為一名合格的Java後臺開發 經常需要查詢線上的日誌,定位線上問題 所以熟練掌握日誌查詢的命令 可以使你更加迅速的定位錯誤日誌位置,及時解決問題 在此,我將介紹幾個自己工作中經常使用到的日誌查詢命令 大家一
Linux下Tomcat重新啟動 和查看日誌
home sta oca tps 關閉 異常 後繼 trap grep 轉載:https://blog.csdn.net/wangchaoyong5566/article/details/52817617?utm_source=blogkpcl6 Linux下Tomcat重
linux下查看tomcat運行日誌
文件 常用指令 linux系統 cor lena local under 進程 指定 查看方式 1、先切換到:cd usr/local/tomcat5/logs2、tail -f catalina.out3、Ctrl+c 是退出tail命令/alt+E+R重置 部署常用指令
linux下tomcat日誌切割
在Linux系統下,tomcat日誌預設輸出到catalina.out,隨著時間的推移,catalina.out會持續增大,不方便管理和查詢。本文將介紹如何用 cronolog工具進行日誌按日期分割。 一、安裝cronolog
系統日誌管理,時間同步服務,linux下的網路配置
####系統的日誌管理#### #2.rsyslog的管理# /var/log/messages ##服務資訊登陸 /var/log/secure ##系統登陸日誌 /var/log/cron ##定時任務日誌 /var/log/maillog ##郵件日誌 /var/log/boot.lo
在linux服務器下日誌提取的python腳本(實現輸入開始時間和結束時間打包該時間段內的文件)
number init temp mktime tar -zcvf .py uri 指令 cal 1.需求:近期在提取linux服務器下的日誌文件時總是需要人工去找某個時間段內的日誌文件,很是枯燥乏味,於是乎,我就想著用python結合linux指令來寫一個日誌提取的腳本,
Linux下檢視檔案和資料夾佔用記憶體大小、刪除日誌 命令
轉:https://www.cnblogs.com/lixuwu/p/5944062.html 閱讀目錄 1 Linux下檢視檔案和資料夾大小 2 刪除系統日誌等 3 實踐 場景:在sts中執行自動部署時候maven提示No space left on d
LINUX日誌採集及遠端日誌同步
一、系統日誌 程序和作業系統核心需要能夠為發生的事件記錄日誌 , 這些日誌可用於系統稽核和問題的故障排除 , 一般這些日誌永久儲存 /var/log 目錄中 1.日誌型別 auth ###
LINUX下的日誌管理
系統日誌 • 程序和作業系統核心需要能夠為發生的事件記錄日誌 , 這些日誌 可用於系統稽核和問題的故障排除 , 一般這些日誌永久存 儲 /var/log 目錄中。系統檔案記錄資訊如下表 : 日誌檔案 用途 /var/log/messages 大多數系統