服務器日志 之 rsyslog和logrotate 概念介紹

1 概述

系統日志是記錄系統中硬件、軟件和系統問題的信息,同時還可以監視系統中發生的事件。用戶可以通過它來檢查錯誤發生的原因,或者尋找受到攻擊時攻擊者留下的痕跡。系統日志包括系統日志、應用程序日志和安全日志。

學會查看并管理日志是運維管理人員必備技能。本文將對日志進行相關概念介紹,并介紹日志的軟件logsyslog和日志存儲管理軟件logrotate進行介紹

2 日志介紹

.日志:

歷史事件:時間,地點,人物(程序),事件

日志級別:事件的關鍵性程度,Loglevel

.系統日志服務:

.sysklogd:CentOS 5之前版本

syslogd: system application記錄應用日志

klogd: linuxkernel記錄內核日志

.事件記錄格式:

日期時間? 主機? ?進程[pid]:事件內容

.C/S架構:通過TCP或UDP協議的服務完成日志記錄傳送,將分布在不同主機的日志實現集中管理

rsyslog

.rsyslog特性:用于CentOS6和7

.多線程

.UDP, TCP, SSL, TLS, RELP

.MySQL, PGSQL, Oracle實現日志存儲

.強大的過濾器,可實現過濾記錄日志信息中任意部分

.自定義輸出格式

.ELK介紹

ELK:elasticsearch, logstash, kibana

ELK是專業記錄和管理日志,適合于大型的環境

.非關系型分布式數據庫

.基于apache軟件基金會jakarta項目組的項目lucene

.Elasticsearch是個開源分布式搜索引擎

.Logstash對日志進行收集、分析,并將其存儲供以后使用

.kibana可以提供的日志分析友好的Web界面

.術語介紹

術語解釋可以查看man? logger,以下對主要的術語進行介紹

.facility:設施,從功能或程序上對日志進行歸類

每個應用程序有自己的特點,所以不同程序,記錄成不一樣的格式

軟件都是rsyslog,不同軟件接口都是一樣的,通過對軟件進行分類,已經定義不一樣的日志level,記錄成不一樣的格式

facility(程序)分類有如下幾種

auth, authpriv, cron,daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, local0-local7,syslog.

local0-local7表示定制,開發者自定義的軟件類別,自己歸類。

其中記錄相關的日志需要加載相應的模塊:rpm -ql rsyslog | grep .*\.so這個可以查看rsyslog這個軟件安裝產生的相關模塊

.Priority定義記錄日志的優先級別,日志緩沖區的每一行文本開頭具有級別標記,級別值越小則優先級越高.有8個級別

默認是info級別,一般的重要事件,其中,記錄日志對時間的要求很高,

debug, info, notice, warn(warning),err(error), crit(critical), alert, emerg(panic)

系統定義了8個消息級別,級別號從0到7分別為:

0: emerg:致命級(KERN_EMESG)

1: alert:警戒級(KERN_ALERT)

2: crit:臨界級(KERN_CRIT)

3: err:錯誤級(KERN_ERR)

4: warning:告警級(KERN_WARN)

5: notice:注意級(KERN_NOTICE)

6: info:通知級(KERN_INFO)

7: debug:調試級(KERN_DEBUG)

.參看幫助:man 3 syslog

.程序包:rsyslog

.主程序:/usr/sbin/rsyslogd

.CentOS 6:service rsyslog {start|stop|restart|status}

.CentOS 7:/usr/lib/systemd/system/rsyslog.service

.配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf

.庫文件:/lib64/rsyslog/*.so

.配置文件格式:由三部分組成

MODULES:相關模塊配置

GLOBAL DIRECTIVES:全局配置

RULES:日志記錄相關的規則配置

.RULES配置格式:

facility.priority;facility.priority…target

target:表示日志記錄的文件

facility.priority表示設備.等級,可以同時定義多個設施的不同等級到同一個文件里,用分號隔開。

.facility:

*:所有的facility

facility1,facility2,facility3,...:指定的facility列表

.priority:

*:所有級別

none:沒有級別,即不記錄

PRIORITY:指定級別(含)以上的所有級別

=PRIORITY:僅記錄指定級別的日志信息

.target:

文件路徑:通常在/var/log/,文件路徑前的-表示異步寫入

異步寫入表示寫寫入內存,后續在寫入日志

同步寫入表示系統一發生變化就可寫

用戶:將日志事件通知給指定的用戶,*表示登錄的所有用戶

日志服務器:@host,把日志送往至指定的遠程服務器記錄

管道:|COMMAND,轉發給其它命令處理

3? 主要日志介紹

./var/log/secure:系統安全相關的日志,文本格式,應周期性分析。

包含驗證和授權方面信息。例如,sshd會將所有信息記錄(其中包括失敗登錄)在這里。當有其他機器通過ssh訪問時,會記錄成功或者失敗的相關日志。

./var/log/btmp:當前系統上,用戶的失敗嘗試登錄相關的日志信息,專門用來記錄失敗登錄的日志,二進制格式,

lastb命令進行查,lastb這個命令是專門用來打開查看btmp這個文件的

./var/log/wtmp:當前系統上,用戶正常登錄系統的相關日志信息,二進制格式,last命令可以查看

last命令,專門用來查看成功登錄的日志,last是打開wtmp這個文件的,其中,日志的systemboot是指開機時間。

uptime也可以用來查看距離最近一次開機有多長時間。

./var/log/lastlog:每一個用戶最近一次的登錄信息,二進制格式,lastlog命令可以查看,僅記錄系統中所有用戶的最近一次登錄的時間

./var/log/dmesg:系統引導過程中的日志信息,存放本次計算機啟動的日志,文本格式,文本查看工具查看即可,專用命令dmesg查看/var/log/dmesg的內容

./var/log/messages:系統中大部分的信息

./var/log/anaconda : anaconda的日志,安裝操作系統時記錄的日志,centos6上沒有獨立的目錄,只有/var/log/anaconda.*的記錄log,在centos7上將這些日志統一放在/var/log/anaconda這個目錄下。

4? Logrotate日志存儲

logrotate系統里的程序,可以實現日志的滾動,防止日志太大,導致系統性能太小。

.logrotate程序是一個日志文件管理工具。用來把舊的日志文件刪除,并創建新的日志文件,稱為日志轉儲或滾動。可以根據日志文件的大小,也可以根據其天數來轉儲,這個過程一般通過cron程序來執行,計劃執行的任務寫在/etc/cron.daily/logrotate這個文件里

.配置文件是/etc/logrotate.conf

.配置文件主要參數如下

.compress通過gzip壓縮轉儲以后的日志

.nocompress不需要壓縮時,用這個參數

.copytruncate用于還在打開中的日志文件,把當前日志備份并截斷,truncate保留表的結構,把數據清空

.nocopytruncate備份日志文件但是不截斷

.create mode owner group轉儲文件,使用指定的文件模式創建新的日志文件

.nocreate不建立新的日志文件

.delaycompress和compress一起使用時,轉儲的日志文件到下一次轉儲時才壓縮

.nodelaycompress覆蓋delaycompress選項,轉儲并壓縮

.errors address專儲時的錯誤信息發送到指定的Email地址

.ifempty即使是空文件也轉儲,是缺省選項。

.notifempty如果是空文件的話,不轉儲

.mail address把轉儲的日志文件發送到指定的E-mail地址

.nomail轉儲時不發送日志文件

.olddir directory轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統

.noolddir轉儲后的日志文件和當前日志文件放在同一個目錄下

.prerotate/endscript在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

.postrotate/endscript在轉儲以后需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

.daily指定轉儲周期為每天

.weekly指定轉儲周期為每周

.monthly指定轉儲周期為每月

.size大小指定日志超過多大時,就執行日志轉儲

.rotate count指定日志文件刪除之前轉儲的次數,0指沒有備份,5指保留5個備份,達到5份日志后,把舊的日志刪掉,最多只會保留最近的5個日志

.Missingok如果日志不存在,提示錯誤,是一個報警

.Nomissingok如果日志不存在,繼續下一次日志,不提示錯誤

5? 例子

在配置文件/etc/rsyslog.conf文件寫入如下的配置,相關介紹如下

例一記錄message日志

以下配置*.info表示info級別以及比info級別高的程序的log都記錄到/var/log/messages,none表示mail,authpriv,cron這三個軟件的日志不記錄到/var/log/messages里

*.info;mail.none;authpriv.none;cron.none? ??????????/var/log/messages

例二不同facility記錄同一等級

如果是多個設施的同一等級記錄到同一日志文件里,那么多個設施間可以用逗號隔開,例子

uucp,news.crit??????????????????????? /var/log/spooler

例三發送消息

給所有的人都發送emerg日志消息,有兩個寫法,

centos 7上

*.emerg????????????????????????:omusrmsg:*

其中omusrmsg是一個模塊,表示emergency級別的日志都會給所有人發消息

centos 6上

*.emerg??????????????????????????*

這里的星號或者是omusrmsg這兩個關鍵字,也可以用賬號代替,只將特定的log發送給特定的人發送消息,如下例子,發送local2的日志是,給root和sunny兩個人發log

local2.*??????????????????????root,sunny

例四 自定義日志

記錄特定軟件的日志,可用設置local0--local7來記錄,其中,local7默認用來記錄計算機啟動的日志例子

local7.*?????????????????????????????/var/log/boot.log

例五 定義軟件facility

軟件要定義那種facility,這個是在軟件的配置文件中定義,如ssh的配置文件/etc/ssh/sshd_config中,定義了把ssh歸類到AUTHPRIV的facility里,如下

#SyslogFacility?AUTH

SyslogFacility?AUTHPRIV

而在日志的配置文件/etc/rsyslog.conf中,把AUTHPRIV這中類型的facility定義記錄的log是/var/log/secure,如下

#?The?authpriv?file?has?restricted?access.

authpriv.*??????????????????????/var/log/secure

因此,有關ssh這個軟件的log就會被記錄到文件/var/log/secure里

這里如果要修改ssh軟件日志的記錄的文件,可以自己定義,如在ssh的配置文件/etc/ssh/sshd_config中將該軟件的facility定義為local2

SyslogFacility??local2

#LogLevel??INFO??#表示記錄info級別以及以上的log

然后在日志的配置文件/etc/rsyslog.conf,把定義local2這個facility的log為/var/log/sshd.log,這樣就可以實現自己定義log文件了,例子

local2.*???????/var/log/sshd.log

這里如果不在配置文件里定義軟件的facility,可以在軟件的配置文件里,自己調用log模塊,并且自己定義long的格式和存放的路徑,當然,這個是要相對成熟或者大型的軟件,如http,在配置文件里調用了log_config_module這個模塊,自己定義了log的記錄格式。http的log滾動也是調用了lograte來實現,滾動的配置文件放在了/etc/logrotate.d/httpd里。

例六測試

測試log是否正常記錄,可以用logger這個工具,man logger查看幫助,例子

logger??-p?local2.info??"This?is?a?test??log"

6? 總結

本文僅對日志的概念和管理軟件rsyslog,日志存儲軟件logrorate進行介紹。日志也可以通過網絡幾種存儲在一臺log服務器上.關于如何部署,請查看作者的博客 服務器日志? 之? 一鍵部署log服務器。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • Rsyslog服務簡介 Rsyslog是syslog的升級版本, 其在RHEL5的版本中, 名稱為syslog.在...
    魏鎮坪閱讀 4,469評論 0 4
  • 了解日志文件是很重要的事情。日志文件可以記錄系統在什么時間、哪臺主機、哪個服務、出現了什么信息等。可以在系統出現問...
    Zhang21閱讀 5,331評論 0 5
  • 日志管理Rsyslog [TOC] 背景 有一個4臺機器的分布式服務,不多不少,上每臺機器上查看日志比較麻煩,用F...
    ferret閱讀 31,575評論 0 6
  • 1 概述 服務器上的日志,處理記錄在本機上,也可以搭建專門收集log的服務器,方便分析。本文將介紹如何啟用rsys...
    ghbsunny閱讀 2,280評論 0 0
  • 1。 從前有個p, 2。 然后自己放了個p 3。 最后死了. end
    平上晴閱讀 247評論 0 0