摘要:環境要求由,和容器組成使用日志收集器將日志發送到。若使用自己的部署,分析和可視化日志的概念保持不變。日志可視化以索引數據為基礎創建豐富的可視化和儀表板的能力而聞名,事實上,得到這些數據并不容易。
昨天小數分享的使用ELK處理Docker日志(一)很受歡迎,今天迫不及待的帶來第二篇,側重于分析和可視化,期待給您帶來幫助:)
噓,聽說數人云工程師們在奧斯汀DockerCON2017買了DockerT恤,小數要搶來送給大家,具體規則請關注明日微信~
上篇文章介紹了如何將容器日志收集到ELK (Elasticsearch,Logstash和Kibana)的基本步驟。不管最終使用哪種方法來收集Docker日志--使用日志驅動程序或專用日志驅動均可行,接下來要解決的問題是如何在Elasticsearch中編入索引并在Kibana展現時處理日志。
本文將進一步分析使用ELK記錄Docker的過程 - 分析和可視化日志。
Dockerized環境要求:
由ELK,Prometheus和Grafana容器組成
使用Docker日志收集器將Docker日志發送到Logz.io ELK。
若使用自己的ELK部署,分析和可視化日志的概念保持不變。
分析之前的準備工作...解析分析容器生成日志的難度級別取決于如何解析--將消息分解成有效字段的效率越高,可視化起來也就越容易,這正是 Kibana 知名的原因。
由于Dockerized環境存在差異,提供詳細的解析說明是很困難的,以下是同一主機上兩個不同容器的日志。首先是Grafana容器:
t=2017-03-22T13:04:47+0000 lvl=info msg="Request Completed" logger=context userId=1 orgId=1 uname=admin method=GET path=/logout status=302 remote_addr=109.67.183.188 time_ms=1ns size=29
然后是Elasticsearch容器:
[2017-03-22T13:05:01,974][INFO ][o.e.c.r.a.DiskThresholdMonitor] [0EUzBd2] rerouting shards: [high disk watermark exceeded on one or more nodes]
日志解析小技巧:
時間戳 嘗試規范不同類型容器日志的時間戳字段,有助于以后日志的分析,不用修改每個新鏡像的時間格式。
服務ID /標簽 為了區分不同的容器日志,給每個日志類型添加標簽至關重要,這樣可以在Kibana中以不同的流來區分日志,若想在日志中獲取容器名稱和ID,也可以添加更多的數據注釋,以便將來分析。
丟掉不必要的數據 如果有不必要的數據字符串,可以使用Logstash過濾器刪除,經常清理后續分析會變得容易一些,另外,請不要將日志寫入STDOUT / STDERR。
當然,自己完成所有這些操作并不簡單,可以借助logspout和Logz.io日志收集器等工具。
日志查詢上篇文章已經介紹如何將Docker日志存入Elasticsearch,基于這個條件我們開始新的操作。
分析數據之前,最好將一些字段添加到主日志顯示區域(“Discover”選項),有助于了解數據。
如上所述,這個字段列表以及是否可以用于分析,完全取決于如何配置解析。示例中保留了一些有用的字段,可以看到諸如“image”(容器鏡像名稱),“id”(容器ID)和“name” (容器名稱)。
.
接下來就是查詢日志,這里需要熟悉Kibana基本查詢語法,簡單介紹下使用Kibana搜索Docker日志上下文,更多Kibana語法查詢方法可關注Kibana教程。
用 "free-text"在日志中進行搜索是比較常用的方式,更精確的搜索例如"Field-level"可鎖定特定容器或主機的日志:
id: 84379bdbe8e0
還可以在邏輯語句中組合兩個"field-level"搜索,以查找特定容器和重要日志:
id: 6c05ea5efd6d AND loglevel:INFO
記住,這些字段需要在解析中進行映射,以便執行基于字段的搜索。
查看特定容器的日志的另一種方法是使用"_exists_"查詢,可根據日志消息中存在的特定字段過濾。
例如:
_exists_:loglevel
完成數據查詢后,不要忘記保存查詢語句,這將會在接下來的可視化環節提供幫助,雖然可以在創建可視化的同時進行搜索,但是過濾后的數據范圍縮小了查找更容易。
Docker日志可視化Kibana以索引數據為基礎創建豐富的可視化和儀表板的能力而聞名,事實上,得到這些數據并不容易。需要再次強調的是-如何映射和解析消息至關重要。下面來看一些簡單的例子。
單個容器日志根據每個容器或主機生成的日志量創建可視化餅圖,使用容器“name”字段的聚合,得到以下結果:
當然也可以使用 "image" 或 "host" 進行聚合。
單個容器事件另一個例子是監控特定容器的事件數量,為此,將基于保存的事件日志搜索創建可視化折線圖,示例中有生成日志事件(錯誤和警告日志)的特殊容器,需要做的是將X軸配置為使用日期直方圖:
條形圖可以更全面地查看每個容器日志:
鏡像/容器/主機的數量用獨特的可視化聚合方式,在環境中顯示Docker容器,鏡像和主機的數量:
這些只是在Kibana中可視化Docker容器日志的簡單示例,Kibana包含更多可用的可視化類型 --平鋪地圖可視化可以創建IP字段(映射為地理位置字段),條形圖,數據表等的地理圖表。
如果使用Logz.io ELK來記錄Docker日志,則可以在ELK APPS 中使用預制的儀表板--一個免費的Kibana可視化和儀表板庫:
.
盡管在Docker1.12中引入了Docker驅動程序,容器日志記錄仍然是一個很大的挑戰,日志收集沒有捷徑,解決方案各有優缺點,然而文中未提及的Docker生成其他類型的數據(例如 container stats 和 daemon events)也應當被記錄下來。
盡管從Docker主機到ELK的設置并創建良好的日志解析通道并不簡單,但最終的結果是值得的,可視化全方位日志將能更有效地關聯事件并監控Dockerized環境。
原文鏈接:https://logz.io/blog/docker-l...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26874.html
摘要:數據導入與校驗容器運行之后,筆者需要驗證是否啟動成功,可以通過瀏覽器訪問和的頁面是否成功來判斷。的整體操作流程比較簡單,首先是收集各種日志并進行過濾,然后將過濾后的內容發送到服務中,最后用戶通過的頁面查看中的日志數據作者湯青松微信日期 一、背景 筆者所在項目組的項目由多個子項目所組成,每一個子項目都存在一定的日志,有時候想排查一些問題,需要到各個地方去查看,極為不方便,此前聽說有ELK...
摘要:數據導入與校驗容器運行之后,筆者需要驗證是否啟動成功,可以通過瀏覽器訪問和的頁面是否成功來判斷。的整體操作流程比較簡單,首先是收集各種日志并進行過濾,然后將過濾后的內容發送到服務中,最后用戶通過的頁面查看中的日志數據作者湯青松微信日期 一、背景 筆者所在項目組的項目由多個子項目所組成,每一個子項目都存在一定的日志,有時候想排查一些問題,需要到各個地方去查看,極為不方便,此前聽說有ELK...
摘要:數據導入與校驗容器運行之后,筆者需要驗證是否啟動成功,可以通過瀏覽器訪問和的頁面是否成功來判斷。的整體操作流程比較簡單,首先是收集各種日志并進行過濾,然后將過濾后的內容發送到服務中,最后用戶通過的頁面查看中的日志數據作者湯青松微信日期 一、背景 筆者所在項目組的項目由多個子項目所組成,每一個子項目都存在一定的日志,有時候想排查一些問題,需要到各個地方去查看,極為不方便,此前聽說有ELK...
摘要:編者的話產品經理為了紀念四歲生日,撰寫一系列文章,介紹如何使用收集和處理環境日志。在將日志發送到的上下文中,使用日志驅動可能是最簡單的方法。如果使用或日志記錄驅動程序,則需要將定義為輸入。 [編者的話] Daniel Berman ( Logz.io 產品經理)為了紀念 Docker 四歲生日,撰寫一系列文章,介紹如何使用 ELK 收集和處理 Dockerized 環境日志。小數今天...
摘要:漢化使用中文界面實踐一背景筆者在上一篇文章使用快速部署分析日志實踐當中有提到如何快速搭建分析日志,但是這只是第一步,后面還有很多儀表盤需要配置,而對于大部分人來說,英文并不是那么好,但都是英文界面,這就阻礙了筆者熟悉的一些操作所以筆者思考能 Kibana漢化使用中文界面實踐 一、背景 筆者在上一篇文章使用Docker快速部署ELK分析Nginx日志實踐當中有提到如何快速搭建ELK分析N...
閱讀 1848·2021-11-22 15:24
閱讀 1307·2021-11-12 10:36
閱讀 3194·2021-09-28 09:36
閱讀 1837·2021-09-02 15:15
閱讀 2745·2019-08-30 15:54
閱讀 2391·2019-08-30 11:02
閱讀 2392·2019-08-29 13:52
閱讀 3539·2019-08-26 11:53