rsyslogd做爲CentOS:7系統自帶的日誌管理工具,爲不少服務提供了便捷的日誌管理接入方案,然而 CentOS:7的官方鏡像 默認是不支持rsyslogd的。咱們作個實驗:docker
1)啓動測試容器centos
docker run -it --name=test-syslog centos:7 /bin/bash
2)安裝rsyslogdbash
yum -y install rsyslog
3)測試rsyslogd工具
rsyslogd # 啓動日誌服務 logger "Hello rsyslog" # 發送一條日誌 cat /var/log/messages # 查看日誌內容
咱們能夠看到並無任何輸出。測試
4)分析緣由日誌
緣由比較簡單,即rsyslog默認經過 journal 讀取日誌信息,但CentOS鏡像默認並未安裝systemd和journald。有兩個解決方案:(1)按官方提供的教程(systemd integration)將systemd和journald集成到CentOS:7鏡像裏;(2)修改 rsyslogd 的配置,不通過 journal 讀取日誌信息。這裏講解下方案(2)的具體操做。blog
5)修改配置教程
cat /var/run/syslogd.pid # 查看剛纔啓動的rsyslogd進程pid kill -9 進程號 # 將剛纔啓動的rsyslogd關掉
rm -rf /etc/rsyslog.d/listen.conf # 將 journal 的配置刪除
vi 打開 /etc/rsyslog.conf 文件,將 $ModLoad imjournal 和 $IMJournalStateFile imjournal.state 這兩行註釋;將 $OmitLocalLogging on 改成 $OmitLocalLogging off。保存退出。進程
6)測試驗證get
rsyslogd # 啓動日誌服務 logger "Hello rsyslog" # 發送一條日誌 cat /var/log/messages # 查看日誌內容
能夠看到以下輸出,說明日誌服務已正常:
May 21 08:57:54 60c66cdf443f rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="108" x-info="http://www.rsyslog.com"] start May 21 08:58:05 60c66cdf443f root: Hello rsyslog