系統日志服務:
sysklogd :CentOS 5之前版本
rsyslog特性:
CentOS6和7
多線程 ?UDP, TCP, SSL, TLS, RELP ?
MySQL, PGSQL, Oracle實現日志存儲 ?
強大的過濾器,可實現過濾記錄日志信息中任意部分 ?
自定義輸出格式
程序包: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
facility: *: 所有的facility
facility1,facility2,facility3,…:指定的facility列表 ?
priority: *: 所有級別
none:沒有級別,即不記錄
PRIORITY:指定級別(含)以上的所有級別
=PRIORITY:僅記錄指定級別的日志信息 ?
target: 文件路徑:通常在/var/log/,文件路徑前的-表示異步寫入 用戶:將日志事件通知給指定的用戶,* 表示登錄的所有用戶
日志服務器:@host,把日志送往至指定的遠程服務器記錄
管道: | COMMAND,轉發給其它命令處理
其它日志
其它的日志文件 ?
/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 統一管理所有 Unit 的啟動日志。帶來的好處就是,可以只用 journalctl一個命令,查看所有日志(內核日志和應用日志)。日志的配置文件 /etc/systemd/journald.conf ?
journalctl用法 ?
查看所有日志(默認情況下 ,只保存本次啟動的日志) journalctl ?
查看內核日志(不顯示應用日志) journalctl -k ?
查看系統本次啟動的日志 journalctl -b journalctl -b -0 ?
查看上一次啟動的日志(需更改設置) journalctl -b -1
查看指定時間的日志
journalctl –since=”2017-10-30 18:10:30″
journalctl –since “20 min ago”
journalctl –since yesterday
journalctl –since “2017-01-10” –until “2017-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
查看指定優先級(及其以上級別)的日志,共有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
顯示日志占據的硬盤空間 journalctl –disk-usage ?
指定日志文件占據的最大空間 journalctl –vacuum-size=1G ?
指定日志文件保存多久 journalctl –vacuum-time=1years
示例:rsyslog將日志記錄于MySQL中
(1) 準備MySQL Server ?
(2) 在mysql server上授權rsyslog能連接至當前服務器
GRANT ALL ON Syslog.* TO ‘USER’@’HOST’ IDENTIFIED BY ‘PASSWORD’; ?
(3) 在rsyslog服務器上安裝mysql模塊相關的程序包 yum install rsyslog-mysql ?
(4) 為rsyslog創建數據庫及表; mysql -uUSERNAME -hHOST -pPASSWORD < /usr/share/doc/rsyslog7.4.7/mysql-createDB.sql ?
(5) 配置rsyslog將日志保存到mysql中
#### MODULES ####
$ModLoad ommysql
#### RULES ####
facility.priority :ommysql:DBHOST,DBNAME,DBUSER, PASSWORD
通過loganalyzer展示數據庫中的日志 (圖形化工具)
(1) 在rsyslog服務器上準備amp或nmp組合
yum install httpd php php-mysql php-gd ?
(2) 安裝LogAnalyzer
tar xf loganalyzer-4.1.5.tar.gz
cp -a loganalyzer-4.1.5/src /var/www/html/loganalyzer
cd /var/www/html/loganalyzer
touch config.php
chmod 666 config.php
(3) 配置loganalyzer
systemctl start httpd.service
http://HOSTIP地址/loganalyzer
MySQL Native, Syslog Fields, Monitorware ?
(4) 安全加強
cd /var/www/html/loganalyzer
chmod 644 config.php
Logrotate日志存儲
logrotate 程序是一個日志文件管理工具。用來把舊的日志文件刪除,并創建新 的日志文件,稱為日志轉儲或滾動。可以根據日志文件的大小,也可以根據其 天數來轉儲,這個過程一般通過 cron 程序來執行 ?
配置文件是 /etc/logrotate.conf
主要參數如下 ?
compress 通過gzip 壓縮轉儲以后的日志 ?
nocompress 不需要壓縮時,用這個參數 ?
copytruncate 用于還在打開中的日志文件,把當前日志備份并截斷 ?
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 個 備份 ?
Missingok 如果日志不存在,提示錯誤 ?
Nomissingok如果日志不存在,繼續下一次日志,不提示錯誤
視頻在37天
?
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101661