Rsyslog


1、相關概念

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)

2、rsyslog服務

程序包:rsyslog

主程序:/usr/sbin/rsyslogd

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

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

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

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

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

  • 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,轉發給其它命令處理

~]# cat /etc/rsyslog.conf |grep -v "^ *$"
################# MODULES #############################################
$ModLoad imuxsock # 為本地系統日志記錄提供支持 (e.g. via logger command)
$ModLoad imjournal # 提供對systemd日志的訪問
#$ModLoad imklog # 讀取內核消息 (the same are read from journald)
#$ModLoad immark  # 提供了--MARK--消息功能
# 提供UDP系統日志接收
#$ModLoad imudp
#$UDPServerRun 514
# 提供TCP系統日志接收
#$ModLoad imtcp
#$InputTCPServerRun 514
################# GLOBAL DIRECTIVES ####################################
# 在哪里放置輔助文件
$WorkDirectory /var/lib/rsyslog
# 使用默認的時間戳格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
# 文件同步功能默認為禁用。此功能通常不是必需的
#$ActionFileEnableSync on
# 將所有配置文件包含在/etc/rsyslog.d/中
$IncludeConfig /etc/rsyslog.d/*.conf
# 通過本地日志套接字關閉信息接收;本地消息現在通過imjournal檢索。
$OmitLocalLogging on
# 文件在日志中存儲位置
$IMJournalStateFile imjournal.state
################# RULES ##########################################
#kern.*                                    /dev/console
*.info;mail.none;authpriv.none;cron.none   /var/log/messages
authpriv.*                                 /var/log/secure
mail.*                                     -/var/log/maillog
cron.*                                     /var/log/cron
*.emerg                                    :omusrmsg:*
uucp,news.crit                             /var/log/spooler
local7.*                                   /var/log/boot.log
# ### begin forwarding rule #######################################
#$ActionQueueFileName fwdRule1 # unique name prefix for spool files
#$ActionQueueMaxDiskSpace 1g   #  1GB的空間限制 (use as much as possible)
#$ActionQueueSaveOnShutdown on # 在關機時將消息保存到磁盤
#$ActionQueueType LinkedList   # 異步運行
#$ActionResumeRetryCount -1    # 如果主機停機,無限重試
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
#*.* @@remote-host:514
# ### end of the forwarding rule ##################################

3、系統日志

  • /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的日志

4、journalctl命令

​ Systemd統一管理所有 Unit 的啟動日志。帶來的好處就是,可以只用journalctl一個命令,查看所有日志(內核日志和應用日志)

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

常用選項:

  • -k:查看內核日志
  • -b -0:查看系統本次啟動的日志
  • -b -1:查看上一次啟動的日志
  • --since "2017-01-10" --until "2017-01-11 03:00":查看指定時間的日志
  • -n 20:顯示尾部20行的日志
  • -f:實時滾動顯示最新日志
  • /usr/sbin/sshd:查看指定服務的日志
  • /usr/bin/bash:查看某個路徑的腳本的日志
  • _PID=1:查看指定進程的日志
  • _UID=0:查看指定用戶的日志
  • -u httpd.service:查看某個 Unit 的日志
  • -u httpd.service -f:實時滾動顯示某個 Unit 的最新日志
  • -p err:查看指定級別及以上的日志
  • --no-pager:不分頁輸出
  • -o json:以 JSON 格式(單行)輸出
  • -o json-pretty:以 JSON 格式(多行)輸出,可讀性更好
  • --disk-usage:顯示日志占據的硬盤空間
  • --vacuum-size=1G:指定日志文件占據的最大空間
  • --vacuum-time=1years:指定日志文件保存多久

5、logrotate程序

​ logrotate 程序是一個日志文件管理工具。用來把舊的日志文件刪除,並創建新的日志文件,稱為日志轉儲或滾動。可以根據日志文件的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程序來執行

配置文件:/etc/logrotate.conf/etc/logrotate.d/*

配置文件參數:

  • 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如果日志不存在,繼續下一次日志,不提示錯誤

6、rsyslog服務實現將日志記錄到遠程主機

​ 1)rsyslog服務器端配置

~]# vim /etc/rsyslog.conf
#### MODULES ####
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
#### RULES ####
local2.*     /data/192.168.0.7-sshd.log
~]# systemctl restart rsyslog

​ 2)客戶端,這里以sshd服務為例

~]# vim /etc/ssh/sshd_config  #修改sshd記錄日志的設施
SyslogFacility local2  #local2為自定義設施
LogLevel INFO
~]# vim /etc/rsyslog.d/sshd.conf
local2.*        @@192.168.0.8  #將local2設施的所有級別的日志都發送給0.8主機
~]# systemctl restart sshd
~]# systemctl restart rsyslog

​ 3)測試,在其他客戶端ssh登錄192.168.0.7sshd服務器,在192.168.0.8日志服務器查看日志

~]# cat /data/192.168.0.7-sshd.log
Jun 24 16:37:30 centos7 sshd[58547]: Accepted password for root from 192.168.0.6 port 52420 ssh2

7、實現rsyslog將日志記錄於MySQL中,並且通過loganalyzer展示數據庫中的日志

​ 1)准備需要的軟件包

~]# yum -y install rsyslog-mysql httpd mariadb-server php php-mysql php-gd

​ 2)配置數據庫

~]# systemctl start mariadb
~]# mysql < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'loguser'@'127.0.0.1' IDENTIFIED BY 'logpass';

​ 3)配置rsyslog服務,將日志保存到MySQL中

~]# vim /etc/rsyslog.conf
#### MODULES ####
$ModLoad ommysql
#### RULES ####
*.info;mail.none;authpriv.none;cron.none  :ommysql:127.0.0.1,Syslog,loguser,logpass
~]# systemctl restart rsyslog

​ 4)配置loganalyzer

loganalyzer程序是基於PHP開發的應用,所以我們需要准備lamp環境,需要注意:不支持FastCGI工作方式的LAMP環境

~]# wget http://download.adiscon.com/loganalyzer/loganalyzer-4.1.6.tar.gz
~]# tar xf loganalyzer-4.1.6.tar.gz 
~]# cp -a loganalyzer-4.1.6/src /var/www/html/lay
~]# touch /var/www/html/lay/config.php
~]# chmod 666 /var/www/html/lay/config.php
~]# systemctl restart httpd

訪問:http://HOST/lay/,點擊here安裝

安裝過程:next - next - next - next - Finish!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM