新型Docker日志管理工具:SPM

jopen 9年前發布 | 17K 次閱讀 Docker
 

【編者的話】本文介紹了一個新的工具SPM,它用于解決在多容器環境下日志管理所遇到的問題,同時它整合了多種功能,避免了以往需要安裝多種工具的麻煩,配合Kibana的展示功能,使得該工具還是值得一試的。

在微服務流行的今天,日志路由和解析的傳統靜態配置方法已經有點吃力;事實上,它還帶來了額外的復雜度和資源消耗。相對的,這使得不能運行在單機上的微服務的數量降低了。

SPM for Docker 整合的日志管理功能中,對微服務進行了支持,方式為降低安裝復雜度、啟動時間和最小化占用資源。 SPM Agent for Docker 匯集了標準、事件和日志,并且它運行在每一個Docker宿主機中的一個容器。除了標準的日志收集功能,我們最近還整合了自動日志格式探測功能和容器日志信息的值域抽取。這個過程被嵌入在Docker API數據流中,日志被收集起來送給統一日志索引工具-- Logsene 。這就意味著并沒有為Docker日志驅動配置syslog,也沒有路由到Logstash中去解析,并且也沒有Elasticsearch來維持這些日志,甚至是連Kibana也不需要。SPM for Docker和Logsene將為你處理好這一切。

有很多方法從Docker中收集日志(你可以閱讀我們的另一篇文章: Docker Logging Webinar );下面來介紹使用Logsene處理Docker日志的優點。

對于新手來說,我們從這幾方面來了解日志管理功能:

  • 配置 - SPM for Docker中日志的配置
  • 自動格式探測和容器日志解析
  • 規則的相關性
  • 日志的報警檢測和異常檢測
  • Logsene和 Kibana 的可視化
  • 從UI中、命令行中搜索日志并用UNIX工具處理日志

1. 配置 - SPM for Docker中日志的配置

首先,我們使SPM for Docker獲取Docker事件和Docker 標注的日志非常的漸變。在安裝方面沒什么好說的,只需要增加 -e LOGSENE_TOKEN=your-logsene-token 到SPM Docker Agent的Docker run的命令中,然后你就可以獲取Docker容器的全部日志并放入Logsene。就這么簡單!

并不是所有的日志都有對我們有用,這就是為什么我們提供了一個通過鏡像名或者容器名的白名單或者黑名單來控制日志輸出。相關的參數如下:

  • -e MATCH_BY_NAME – 容器名白名單的正則表達式
  • -e MATCH_BY_IMAGE - 鏡像名白名單的正則表達式
  • -e SKIP_BY_NAME – 容器名黑名單的正則表達式
  • -e SKIP_BY_IMAGE - 鏡像名黑名單的正則表達式
  • -v PATH_TO_YOUR_FILE:/etc/logagent/patterns.yml – 可選,自定義日志解析

一個籌集Metrics、Events和Logs的例子:

docker run --name spm-agent \

-e HOSTNAME=$HOSTNAME \

-e SPM_TOKEN=YOUR_SPM_TOKEN \

-e LOGSENE_TOKEN=YOUR_LOGSENE_TOKEN \

-e MATCH_BY_IMAGE=”nginx|mysql|mongodb|myapp” \

-v /var/run/docker.sock:/var/run/docker.sock \

sematext/spm-agent-docker

2. 容器日志自動解析

Docker日志是容器們的終端輸出流。這些數據中混合著來自啟動腳本的文本信息和來自應用的結構化日志。問題很明顯,并不能直接對日志事件流進行直接處理。需要區分出哪些日志來自哪個容器、應用,并正確的解析。

SPM for Docker分析了行格式,并將其轉換為JSON格式,使得所有的值域可見,并且從文本日志中抽取屬性域。過去,通常需要使用日志處理工具,如 Logstash、Fluentd或者rsyslog來處理日志信息,但是這些的配置是根據輸入源來靜態配置。 這就不能夠適應動態微服務的環境。 有些人已經對syslog驅動、解析器配置、日志路由甚至其他部分做了更改。這就是為什么我們要整合自動格式檢測到SPM中的原因,利用 logagent-js來處理文本。這個整合的footprint很少,并不需要將日志導到外部服務,并且它為流行的應用進行日志格式探測,并生成 JSON和以行為單位的日志輸出。下圖為由Docker Agent生成的Apache Access日志域值。

新型Docker日志管理工具:SPM

例如,SPM Docker Agent可以從下面這些官方鏡像中解析日志:

  • MongoDB, Mysql, Redis
  • NGINX, Apache
  • Logstash或bunyan支持的任何JSON輸出
  • 帶或者不帶時間戳的文本信息
  • 任何采用mount屬性掛載的自定義模式,如“-v /mypatters/patterns.yml:/etc/logagent/patterns.yml”

探測和解析日志信息的logagent-js是一個開源的項目,歡迎貢獻更多的日志格式解析。

3. 指標相關性

由于日志存儲在Logsene中,它提供了分析相關性能的能力,如CPU使用率、內存使用率、網絡以及硬盤I/O。你可以在SPM中很方便的查看 與任何性能指標有關的日志信息。如果你在公司中負責解決性能問題或者其他相關問題,你就會明白它會節省你多少時間去獲取度量指標、日志和事件。下圖為 NGINX的例子。

新型Docker日志管理工具:SPM

4. Docker日志上的報警

Logsene提供了定義報警的功能,同時還提供了日志的異常檢測,例如錯誤信息、警告信息、安全漏洞等。

更多這方面的信息請查閱 這個主題

5. 采用Kibana展示

我們對全部的Logsene應用提供了 一鍵到Kibana 功能。如果你的日志包含數值型數據,又或者你想生成日志頻率、消息類型、高頻錯誤的統計信息,在Logsene中可以很輕松的創建Kibana控制臺。

6. 在命令行中搜索日志并處理并用UNIX工具處理

如果你活在終端的世界里并熱愛命令行工具,可以使用 Logsene命令行解釋器 。沒有必要為了搜索而使用UI界面,也沒有必要用JSON查詢。使用Logsene+awk+grep+sort+uniq+...任何你需要的即可。

五分鐘快速上手

恭喜!你已經掌握了很多信息。如果對剛剛閱讀的內容有興趣,可以 注冊 賬號,為Docker運行SPM并且親自體驗下那些吸引你的功能。初創企業、沒有或者只有很少投資資金的創業公司、非營利性企業以及學術機構有 優惠價格 ,快來聯系我們吧。如果你可以幫助我們把SPM和Logsene做的更好,請 加入我們 吧!

原文鏈接: Innovative Docker Log Management (翻譯:陳杰)

===============================================

譯者介紹

陳杰,北京理工大學計算機學院在讀博士,研究方向是自然語言處理在企業網絡信譽評價方面的應用,平時也樂于去實現一些突發的想法。在疲于配置系統環境時發現了Docker,跟大家一起學習、使用和研究Docker。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!