docker日誌引擎
docker原生支援眾多的日誌引擎,適用於各種不同的應用場景,本篇文件對其作一個簡單的說明。 |
docker支援的日誌引擎如下:
none:關閉docker的回顯日誌, docker logs 看不到任何輸出。使用這種方式也就意味著無法檢視任何容器輸出的日誌。
json-file:把每個容器的回顯日誌打到每個容器的內部, 形式為json 檔案。在實際使用中, 有些容器在啟動後有大量的回顯日誌, 尤其在程式內部報錯時打出的日誌資訊尤其巨大, 很可能會因為某幾個容器的json 日誌過大而撐爆整個宿主機的磁碟。
syslog:把所有容器的回顯日誌打到系統的syslog中。
目前harbor私有映象倉庫使用docker-compose方式啟動的話,就預設使用的這種方式。將所有容器的日誌都集中收集到一個harbor-log的容器中,在執行docker logs的時候會提示"logs" command is supported only for "json-file" and "journald" loggin drivers (got: syslog)。
journald:把所有容器的回顯日誌打到系統的journald服務中,這是推薦的方式。
fluentd:把所有容器的回顯日誌打到fluentd服務中。
gelf 把所有容器的回顯日誌打到支援 GELF(Graylog Extended Log Format) 格式的服務中, 比如Graylog或Logstash。
修改docker配置檔案/etc/docker/daemon.json如下:
{ "log-driver": "journald" }
在容器執行時指定其日誌引擎:
docker run --log-driver=journald alpint /bin/sh
# /etc/systemd/jornald.conf示例:
[Journal] #Storage=auto 儲存為自動模式, 其他模式有無日誌模式, 純記憶體模式和純磁碟模式 #Compress=yes 預設啟動壓縮功能 #Seal=yes 預設加密, 日誌檔案為二進位制檔案, 無法 vim或tail 檢視 #SplitMode=uid #SyncIntervalSec=5m #RateLimitIntervalSec=30s #RateLimitBurst=1000 #SystemMaxUse= 精確設定日誌可以佔用的最大磁碟空間 #SystemKeepFree= 保證系統剩餘的空間大小 #SystemMaxFileSize= #SystemMaxFiles=100 #RuntimeMaxUse= #RuntimeKeepFree= #RuntimeMaxFileSize= #RuntimeMaxFiles=100 #MaxRetentionSec= #MaxFileSec=1month #ForwardToSyslog=no #ForwardToKMsg=no #ForwardToConsole=no #ForwardToWall=yes #TTYPath=/dev/console #MaxLevelStore=debug #MaxLevelSyslog=debug #MaxLevelKMsg=notice #MaxLevelConsole=info #MaxLevelWall=emerg
journald 預設配置下, 預設日誌最大限制為所在檔案系統容量的 10%
預設配置下, journald 的日誌存放在 /var/log/journal 下, 如果該目錄在根分割槽下, 且根分割槽空間大小為10G, 那麼 journald 存放日誌最大的大小為1G, 超出1G 後將刪除最早的日誌
也可以精確指定佔用的空間大小:
SystemMaxUse=50M
journalctl 從頭檢視所有日誌 journalctl -b 檢視本次開機後的所有系統引導日誌 journalctl -b -1 顯示上次開機後的系統引導日誌, 以此類推 journalctl -f 類似於 tail -f或tailf journalctl /usr/bin/dockerd 後加程式的絕對路徑,可以顯示該程式的所有日誌資訊 journalctl -xe systemd 啟動程式失敗時會提示你使用這個命令檢視錯誤資訊, 其中x 表示在日誌輸出中增加一些解釋性的短文字, e表示立即跳轉至日誌的尾部
journald配置中,有兩個非常重要的最佳化專案:
ForwardToSyslog=yes ForwardToWall=yes
以上兩個引數預設都是 yes 意味著 journald 收集日誌後還會轉發到 syslog 中
由此造成的影響是: journald 雖然可以乖乖的按照上面的配置進行日誌的清理, 但是 syslog 卻不在 journald 的控制範圍之內
在日誌量很大的情況下,syslog中的日誌量也變得巨大,所以我們需要把上面兩個引數的值改為no
systemctl restart systemd-journald.service
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2699444/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker 容器日誌分析Docker
- 容器引擎Docker和容器編排kubernetes如何優雅的收集容器日誌Docker
- docker 容器日誌清理方案Docker
- docker檢視容器日誌命令Docker
- ELK+logspout收集Docker日誌Docker
- 跟我一起學docker(15)--監控日誌和日誌管理Docker
- Docker容器日誌管理最佳實踐Docker
- ClickHouse(16)ClickHouse日誌引擎Log詳細解析
- Docker應用容器日誌資訊收集Docker
- 在Docker上搭建ELK+Filebeat日誌中心Docker
- Docker 日誌自動輪轉和清理配置Docker
- Docker Compose部署 EFK(Elasticsearch + Fluentd + Kibana)收集日誌DockerElasticsearch
- 使用docker搭建ELK分散式日誌同步方案Docker分散式
- ABP 使用ElasticSearch、Kibana、Docker 進行日誌收集ElasticsearchDocker
- docker筆記48-部署EFK日誌系統Docker筆記
- 使用Docker快速部署ELK分析Nginx日誌實踐DockerNginx
- 利用ELK搭建Docker容器化應用日誌中心Docker應用日誌
- 基於Docker應用容器日誌檔案收集Docker
- Docker筆記(十三):容器日誌採集實踐Docker筆記
- linux自動清理Docker標準輸出日誌LinuxDocker
- .NetCore使用Docker安裝ElasticSearch、Kibana 記錄日誌NetCoreDockerElasticsearch
- 如何訪問Docker容器中的Spring Boot日誌DockerSpring Boot
- 日誌分析平臺ELK之搜尋引擎Elasticsearch叢集Elasticsearch
- 容器引擎-DockerDocker
- 日誌分析-apache日誌分析Apache
- Docker安裝ELK並實現JSON格式日誌分析DockerJSON
- docker-compose搭建grafana+loki+promtail日誌系統DockerGrafanaLokiAI
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- 日誌監控實踐 - 監控Agent整合Lua引擎實現多維度日誌採集
- 日誌
- Docker Swarm or Kubernetes ? Docker 叢集技術的楚漢爭霸!|航海日誌 Vol.18DockerSwarm
- 1、安裝docker引擎Docker
- 應用容器引擎-DockerDocker
- 【Spring】日誌列印sql,日誌配置列印sqlSpringSQL
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架
- CMS日誌
- 日誌配置
- mybatis日誌MyBatis