Docker -- 日誌

docker 的兩總日誌docker

  1. 引擎日誌
  2. 容器日誌

引擎日誌

簡介:

  • 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 了。ELK 是三個軟件的合稱:Elasticsearch、Logstash、Kibana。日誌

Elasticsearch

一個近乎實時查詢的全文搜索引擎。Elasticsearch 的設計目標就是要可以處理和搜索巨量的日誌數據。code

Logstash

讀取原始日誌,並對其進行分析和過濾,而後將其轉發給其餘組件(好比 Elasticsearch)進行索引或存儲。Logstash 支持豐富的 Input 和 Output 類型,可以處理各類應用的日誌。orm

Kibana

一個基於 JavaScript 的 Web 圖形界面程序,專門用於可視化 Elasticsearch 的數據。Kibana 可以查詢 Elasticsearch 並經過豐富的圖表展現結果。用戶能夠建立 Dashboard 來監控系統的日誌blog

相關文章
相關標籤/搜索