日誌是系統很重要的一個組成部分,通過日誌可以及時發現系統中存在的問題,也可以為修複問題提供線索。Docker提供了多種外掛程式方式管理日誌,本文就對使用MongoDB儲存Docker日誌的過程做個記錄。 資料流 Created with Raphaël 2.1.2 開始 Docker容器 FluentD MongoDB 結束
Docker產生的日期 發送到 FluentD,然後FluentD在轉存到MongoDB。 配置Fluentd
前提:作業系統是CentOS7,已安裝MongoDB3.4 1. 安裝Fluentd
CentOS 7的軟體庫並沒有包含Fluentd的安裝包,所以需要手動安裝。在CentOS使用的軟體td-agent。
# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
上面命令會在/etct/yum.repo.d/目錄中,建立一個td-agent的安裝庫 td.repo,然後自動安裝td-agent。安裝完畢後設為自動啟動。
# systemctl start td-agent# systemctl enable td-agent
如果在啟動過程中出現問題,可以查看位於/var/log/td-agent/下記錄檔td-agent.log 2. 配置將docker日誌轉存到MongoDB
轉存到MongoDB需要外掛程式支援,但是預設情況下td-agent是沒有安裝該外掛程式的,需要安裝。
# yum -y install td-agent-gemt# td-agent-gem install fluent-plugin-mongo
編輯/etc/td-agent/td-agent.conf,增加
## match tag=docker.* and dump to mongodb## 在docker啟動容器時,日誌的tag要符合docker.*的形式<match docker.*> @type mongo # 資料庫地址 host 127.0.0.1 # 資料庫連接埠 port 22017 # 儲存日誌的資料庫和資料集名稱 database docker collection log</match>
重啟td-agent。 啟動容器
啟動容器的命令改為:
$ docker run --mount type=bind,source=/home/demo/app,destination=/app --log-driver=fluentd --log-opt tag="docker.log" python3:latest python3 /app/test.py
運行完畢後,可以到MongoDB中查看日誌。
參考文檔:
https://docs.treasuredata.com/articles/td-agent
https://docs.docker.com/engine/admin/logging/fluentd/
https://docs.fluentd.org/v1.0/articles/out_mongo