使用fluentd管理docker日志
對于,大規(guī)模運行的容器集群來說,日志不能集中管理是一件很痛苦的事情。不能合理的收集,管理檢索應用日志,在應用發(fā)生了故障的時候?qū)o法很好的追溯問題發(fā)生的原因。?
docker日志收集目前的方案較多,本文就不去探究究竟是那種方案更好。目前開源elk的日志收集技術堆棧使用的較為廣泛,各大互聯(lián)網(wǎng)公司也有基于elk技術棧進行日志收集的案例。其中,elk種的logstash,是用來收集,格式化,然后將日志存入elasticsearch中,供查詢統(tǒng)計。本文即將討論的是,使用fluentd替換elk中的logstash。這里就不詳細展開討論fluentd和logstash孰優(yōu)孰劣。為了使docker的日志能夠存儲到elastic search,需要解決的就是如何導出docker的日志。?
查看docker文檔,docker支持使用fluentd作為容器日志的driver。下面,就來詳細的說明,如何安裝fluentd,并配置docker使用fluentd在存儲日志。step by step。
1)步驟1:安裝fluentd?
配置運行環(huán)境?
1. 使用ntp通過各個節(jié)點的時間,以便各個節(jié)點記錄的日志時間戳保持一致?
2. 設置文件描述符的數(shù)量至65536。 可以使用ulimit -n查詢當前支持的最大。如果不是65536,可以修改/etc/security/limits.conf 中的”root soft nofile”,”root hard nofile”數(shù)值至65536,然后reboot操作系統(tǒng)?
3. 優(yōu)化內(nèi)核網(wǎng)絡參數(shù)。/etc/sysctl.conf
- 2)安裝fluentd (本文僅僅給出了rhel/centos)
- ?
flutend安裝完成后,默認的配置文件路徑在/etc/td-agent/td-agent.conf。?
3) 測試?
td-agent默認將配置收集來自http的日志,并將日志轉儲到/var/log/td-agent/td-agent.log
- ?
如果在,/var/log/td-agent/td-agent.log中看到了2016-03-26 11:50:29 +0800 debug.test: {“json”:”message”} 則表明fluent安裝成功。至此,fluent安裝完成。下面,?
配置看看,如果配置docker將日志轉發(fā)給fluted。
步驟2: 配置fluent接收docker日志?
在/etc/td-agent/td-agent.conf中增加,并重啟td-agent,systemctl restart td-agent
- ?
步驟3: 配置docker使用fluent為log-driver?
配置docker轉儲日志有兩種方法,指定特定的容器或者配置docker daemon將所有容器日志均存儲到fluent中。?
方法1:指定容器
- ?
方法2: 設置全局log-driver
docker daemon --log-driver=fluentd- ?
至此,已經(jīng)成功將docker的日志交給fluent處理。接下來的工作是,配置將fluent的日志轉發(fā)給elasticsearch進行處理。
參考:?
http://docs.fluentd.org/articles/install-by-rpm?
https://docs.docker.com/engine/admin/logging/fluentd/
總結
以上是生活随笔為你收集整理的使用fluentd管理docker日志的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ulimit命令
- 下一篇: 支持本地 持久化的 单机版 consul