1. 程式人生 > >linux下的日誌採集---rsyslog

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 與印表機活動有關。
mail 郵件日誌。
mark 產生時間戳。系統每隔一段時間向日志文件中輸出當前時間,每行的格式類似於 May 26 11:17:09 rs2 -- MARK --,可以由此推斷系統發生故障的大概時間。
news 網路新聞傳輸協議(nntp)產生的訊息。
ntp 網路時間協議(ntp)產生的訊息。
user 使用者程序。
uucp UUCP子系統
3、常見日誌檔案

所有的系統應用都會在/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工作流程

簡單的來說:首先資料通過輸入模組進入主佇列,然後經由過濾條件分解到各個子佇列,最後交給輸出模組

http://www.rsyslog.com/doc/v8-stable/_images/module_workflow.png

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),另一臺作為日

Linuxrsyslog日誌採集及journald的日誌

一、rsyslog日誌        Linux核心由很多的子系統組成,包含網路、檔案訪問、記憶體管理等,子系統需要給使用者傳送一些訊息,這些訊息內容包括訊息的重要來源以及重要性等,所有這些子系統都要把訊息傳從到一個可以維護的

linuxawk日誌分析

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

LinuxShell命令的輸出信息同時顯示在屏幕和保存到日誌文件中

blog inux -a 輸出 輸出內容 使用 col 文件中 信息 #直接覆蓋日誌文件 ls -l | tee ./t.log #將輸出內容附加到日誌文件 ls -l | tee -a ./t.log 使用的是tee命令Linux下She

如何在Linux優雅的查詢日誌

lin 鍵盤 htm 線上 comm 發現 In 操作日誌 示例 做為一名合格的Java後臺開發 經常需要查詢線上的日誌,定位線上問題 所以熟練掌握日誌查詢的命令 可以使你更加迅速的定位錯誤日誌位置,及時解決問題 在此,我將介紹幾個自己工作中經常使用到的日誌查詢命令 大家一

LinuxTomcat重新啟動 和查看日誌

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重置 部署常用指令

linuxtomcat日誌切割

       在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    大多數系統