20171012 日志管理

  • 日志介紹
  • rsyslog
  • 日志管理journalctl
  • MySQL管理日志

一、日志介紹

(一)日志的基本概念

  • 日志:將事件發生的時間、地點、人物、事件等信息保存記錄
  • 日志級別:根據事件的關鍵程度對日志的分級
  • 事件記錄格式:一般包含日期時間、主機、進程[pid]、事件內容
  • 基于C/S架構的日志系統:通過TCP或UDP協議的服務完成日志記錄傳送,將分布在不同主機的日志實現集中管理

(二)日志系統的發展

  • sysklogd: CentOS5之前的系統日志服務

    • syslogd: 記錄應用日志
    • klogd:記錄內核日志
  • rsyslog: CentOS6, 7使用的系統日志服務

    • 支持TCP, UDP
    • 支持日志轉儲于數據庫MySQL, Oracle
    • 強大的過濾器
    • 自定義輸出格式
  • ELK:elasticsearch, logstash, kibana

    • 非關系型分布式數據庫
    • 專業的日志管理平臺

(三)rsyslog的關鍵概念

  • facility:設施,從功能或程序上對日志進行歸類
    auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security(auth), user, uucp, local0-local7(預留自定義), syslog

  • priority:優先級別,從低到高排序
    debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

二、rsyslog

(一)rsyslog相關文件路徑

  • 主程序:/usr/sbin/rsyslogd
  • CentOS 6服務管理:service rsyslog {start|stop|restart|status}
  • CentOS 7服務管理:systemctl {start|stop|restart|status} rsyslog.service
  • 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
  • 庫文件:/lib64/rsyslog/*.so

(二)rsyslog配置文件格式

(1)總體分為三部分
  • MODULES:相關模塊配置
  • GLOBAL DIRECTIVES:全局配置
  • RULES:日志記錄相關的規則配置
(2)RULES配置格式
  • 格式:facility.priority;facility.priority… target

  • facility

    • *:所有的facility
    • facility1,facility2,facility3,...:指定的facility列表
  • priority

    • *:所有級別
    • none:沒有級別,即不記錄
    • PRIORITY:指定級別(含)以上的所有級別
    • =PRIORITY:僅記錄指定級別的日志信息
  • target

    • 文件路徑:通常在/var/log/,文件路徑前的-表示異步寫入
    • 用戶:將日志事件通知給指定的用戶,*表示登錄的所有用戶
    • 日志服務器:@host,把日志送往至指定的遠程服務器記錄
    • 管道:| COMMAND,轉發給其它命令處理

(三)rsyslog的網絡日志服務

(1)配置網絡日志服務:修改配置文件,當UDP和TDP服務模塊開啟
vim /etc/rsyslog.conf
#### MODULES ####
# Provides UDP syslog reception
$ModLoadimudp             //取消行前的注釋符
$UDPServerRun514          //取消行前的注釋符
# Provides TCP syslog reception
$ModLoadimtcp             //取消行前的注釋符
$InputTCPServerRun514     //取消行前的注釋符
(2)實驗:配置rsyslog網絡日志服務
  • 主機配置:兩臺主機
    日志服務器:負責接收客戶端通過UDP或TCP發來的日志信息(IP:192.168.136.230)
    日志客戶端:負責發出寫入日志請求

  • 實驗1:通過UDP使客戶端的事件記錄在日志服務器的/var/log/messages中

// 修改服務器配置文件module部分,開啟UDP通信模塊
vim /etc/rsyslog.conf
$ModLoad imudp        //刪除行前注釋符
$UDPServerRun 514     //刪除行前注釋符
systemctl restart rsyslog
// 修改客戶端配置文件rules部分
vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none      @192.168.136.230     //修改target
systemctl restart rsyslog

//客戶端測試
logger -p syslog.info "this is 1st message"

//服務器查看日志記錄
tail /var/log/messages
  • 實驗2:通過TCP使客戶端的事件記錄顯示在日志服務器的所有登錄用戶終端上
// 修改服務器配置文件module和rules部分,開啟TCP通信模塊
vim /etc/rsyslog.conf
$ModLoad imtcp             //刪除行前注釋符
$InputTCPServerRun 514     //刪除行前注釋符
local2.*      *
systemctl restart rsyslog
// 修改客戶端配置文件rules部分
vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none    /var/log/messages     //恢復上個實驗的修改
local2.*      @@192.168.136.230     //TCP使用兩個@
systemctl restart rsyslog

//客戶端測試
logger -p local2.info "this is 2nd message"

(四)其他日志

  • /var/log/secure:系統安全日志,文本格式,應周期性分析

  • /var/log/btmp:當前系統上,用戶的失敗嘗試登錄相關的日志信息,二進制格式,lastb命令進行查看

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

  • /var/log/lastlog:每一個用戶最近一次的登錄信息,二進制格式,lastlog命令可以查看

  • /var/log/dmesg:系統引導過程中的日志信息,文本格式,可用文本查看工具查看,也可以專用命令dmesg查看

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

  • /var/log/anaconda : anaconda的日志

三、日志管理journalctl

  • systemd的日志管理工具,可以查看所有內核日志和應用日志

  • 配置文件:/etc/systemd/journald.conf

(一)journalctl查看日志

  • 查看所有日志(默認情況下,只保存本次啟動的日志)
    journalctl

  • 查看內核日志(不顯示應用日志)
    journalctl -k

  • 查看系統本次啟動的日志
    journalctl -b
    journalctl -b -0

  • 查看上一次啟動的日志(需更改設置)
    journalctl -b -1

  • 查看指定時間的日志
    journalctl --since="2012-10-30 18:17:16"
    journalctl --since "20 min ago"
    journalctl --since yesterday
    journalctl --since "2015-01-10" --until "2015-01-11 03:00"
    journalctl --since 09:00 --until "1 hour ago"

  • 顯示尾部的最新10行日志
    journalctl -n

  • 顯示尾部指定行數的日志
    journalctl -n 20

  • 實時滾動顯示最新日志
    journalctl -f

  • 查看指定服務的日志
    journalctl /usr/lib/systemd/systemd

  • 查看指定進程的日志
    journalctl _PID=1

  • 查看某個路徑的腳本的日志
    journalctl /usr/bin/bash

  • 查看指定用戶的日志
    journalctl _UID=33 --since today

  • 查看某個Unit的日志
    journalctl -u nginx.service
    journalctl -u nginx.service --since today

  • 實時滾動顯示某個Unit的最新日志
    journalctl -u nginx.service -f

  • 合并顯示多個Unit的日志
    journalctl -u nginx.service -u php-fpm.service --since today

(二)journalctl查看指定優先級(及其以上級別)的日志,共有8級

0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug
journalctl -p err -b

(三)輸出格式和其他日志設置

  • 日志默認分頁輸出,--no-pager 改為正常的標準輸出
    journalctl --no-pager

  • 以JSON 格式(單行)輸出
    journalctl -b -u nginx.service -o json

  • 以JSON 格式(多行)輸出,可讀性更好
    journalctl -b -u nginx.service -o json-pretty

  • 顯示日志占據的硬盤空間
    journalctl --disk-usage

  • 指定日志文件占據的最大空間
    journalctl --vacuum-size=1G

  • 指定日志文件保存多久
    journalctl --vacuum-time=1years

四、MySQL管理日志

(一)實驗1:rsyslog將日志記錄于MySQL中

  • 實現此功能需要兩臺主機
    主機1:rsyslog服務器(IP: 192.168.136.230)
    主機2:mysql數據庫(IP: 192.168.136.130)
(1)主機1安裝mysql與rsyslog的接口
  • 安裝rsyslog-mysql
    yum install rsyslog-mysql

  • 查看安裝文件路徑,其中的SQL腳本文件用于生成數據庫,直接傳送至主機2

rpm -ql rsyslog-mysql
scp /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql 192.168.136.130:/root
(2)主機2安裝并配置數據庫
  • 安裝mariadb
yum  install mariadb-server
systemctl start mariadb.service
mysql_secure_installation
  • 用傳送來的SQL腳本生成數據庫
    mysql -u root -pmagedu < mysql-createDB.sql
  • 創建管理用戶并授權
    MariaDB [(none)]> grant all on Syslog.* to loguser@'%' identified by 'centos';
(3)主機1配置rsyslog
  • 編輯/etc/rsyslog.conf文件
vim /etc/rsyslog.conf 
$ModLoad ommysql     //載入模塊
local2.*      :ommysql:192.168.136.130,Syslog,loguser,centos      //設置rules
  • 重啟rsyslog服務并測試
systemctl restart rsyslog.service
logger -p local2.info "this is the message for rsyslog-mysql"
(4)主機2查看數據庫
mysql -u loguser -pcentos
MariaDB [(none)]> use Syslog;
MariaDB [Syslog]> show tables;
MariaDB [Syslog]> select *  from SystemEvents\G;

(二)實驗2:通過loganalyzer展示數據庫中的日志

  • 本實驗環境承接實驗1,并且需要添加主機3用于通過web界面展示數據庫的日志

  • 主機分工:
    主機1:rsyslog服務器(IP: 192.168.136.230)
    主機2:mysql數據庫(IP: 192.168.136.130)
    主機3:apache httpd服務器,php,loganalyzer(IP: 192.168.136.229)

(1)主機3安裝apache httpd, php
yum install httpd php php-mysql php-gd
service httpd start
(2)主機3測試是否成功連接到數據庫
vim /var/www/html/index.php
<?php
$mysqli=new mysqli("192.168.136.130","loguser","centos");
if(mysqli_connect_errno()){
echo "連接數據庫失敗!";
$mysqli=null;
exit;
}
echo "連接數據庫成功!";
$mysqli->close();
phpinfo();
?>

瀏覽器登錄http://192.168.136.229/,測試連接數據庫成功

(3)主機3編譯安裝loganalyzer
tar xvf loganalyzer-4.1.5.tar.gz
cd loganalyzer-4.1.5
cp -r src/ /var/www/html/log     //只復制src子目錄的文件至網頁存放目錄
cd /var/www/html/log/
touch config.php                 //準備安裝配置文件
chmod 666 config.php 
(4)配置loganalyzer
  • 瀏覽器登錄http://192.168.136.229/log/,出現提示如下圖
  • 點擊here,進入安裝過程。依次點擊繼續,在step 7時,填寫mysql數據庫的關鍵信息

紅框中的信息按照創建數據庫的相關信息填寫

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

推薦閱讀更多精彩內容

  • 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二進制和源碼安裝 1.1BLOG文檔結構圖 ...
    小麥苗DB寶閱讀 10,584評論 0 31
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,830評論 18 139
  • 日志文件對于一個服務器來說是非常重要的,它記錄著服務器的運行信息,許多操作都會寫日到日志文件,通過日志文件可以監視...
    時待吾閱讀 1,031評論 0 5
  • I/O模型Nginx介紹Nginx的安裝和目錄結構Nginx的配置Nginx的編譯安裝 一、I/O模型 (一)I/...
    哈嘍別樣閱讀 904評論 0 4
  • 一.mysql的日志應用 (1)查詢日志:general_log 記錄查詢語句,日志存儲位置:文件:file表:t...
    楠人幫閱讀 587評論 0 4