docker容器中使用rsyslogd

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
相關文章
相關標籤/搜索