docker 的兩總日誌docker
- Docker 引擎日誌就是 dockerd 運行時的日誌
- 在CentOS 7系統中,Docker 引擎日誌通常是交給 systemd來管理
- 查詢方法:journalctl -u docker
# journalctl -u docker
- 容器的日誌即容器內的服務產生的日誌
- 對於一個運行的容器,Docker 會將日誌發送到 容器的 標準輸出設備(STDOUT)和標準錯誤設備(STDERR),STDOUT 和 STDERR 實際上就是容器的控制檯終端
Docker 提供了多種日誌機制幫助用戶從運行的容器中提取日誌信息,這些機制被稱做 logging driverjson
Docker 的默認 logging driver 是json-fileapi
╭─root@du-z ~ ╰─➤ docker info | grep Logging Logging Driver: json-file
Docker支持的日誌驅動列表elasticsearch
Driver | Description |
---|---|
none | 運行的容器沒有日誌,docker logs也不返回任何輸出。 |
local | 日誌以自定義格式存儲,旨在實現最小開銷。 |
json-file | 日誌格式爲JSON。Docker的默認日誌記錄驅動程序。 |
syslog | 將日誌消息寫入syslog。該syslog守護程序必須在主機上運行。 |
journald | 將日誌消息寫入journald。該journald守護程序必須在主機上運行。 |
gelf | 將日誌消息寫入Graylog擴展日誌格式(GELF)端點,例如Graylog或Logstash。 |
fluentd | 將日誌消息寫入fluentd(轉發輸入)。該fluentd守護程序必須在主機上運行。 |
awslogs | 將日誌消息寫入Amazon CloudWatch Logs。 |
splunk | 使用HTTP事件收集器將日誌消息寫入splunk。 |
etwlogs | 將日誌消息寫爲Windows事件跟蹤(ETW)事件。僅適用於Windows平臺。 |
gcplogs | 將日誌消息寫入Google Cloud Platform(GCP)Logging。 |
logentries | 將日誌消息寫入Rapid7 Logentries。 |
Driver網址:https://docs.docker.com/config/containers/logging/configure/搜索引擎
方法一:設計
# docker logs CONTAINER # docker logs -f CONTAINER
- docker logs可以打印出自容器啓動以來完整的日誌,而且-f 參數能夠實時監控
- 當日志量比較大的時候,咱們使用 docker logs 來查看日誌,會對 docker daemon 形成比較大的壓力,容器致使容器建立慢等一系列問題
- 只有使用了 local 、json-file、journald 的日誌驅動的容器才能夠使用 docker logs 捕獲日誌
在開源的日誌管理方案中,最出名的莫過於 ELK 了。ELK 是三個軟件的合稱:Elasticsearch、Logstash、Kibana。日誌
一個近乎實時查詢的全文搜索引擎。Elasticsearch 的設計目標就是要可以處理和搜索巨量的日誌數據。code
讀取原始日誌,並對其進行分析和過濾,而後將其轉發給其餘組件(好比 Elasticsearch)進行索引或存儲。Logstash 支持豐富的 Input 和 Output 類型,可以處理各類應用的日誌。orm
一個基於 JavaScript 的 Web 圖形界面程序,專門用於可視化 Elasticsearch 的數據。Kibana 可以查詢 Elasticsearch 並經過豐富的圖表展現結果。用戶能夠建立 Dashboard 來監控系統的日誌blog