您好,登錄后才能下訂單哦!
由Rancher社區維護的應用商店最近迎來了兩個明星項目——SPM 和 Logsene,來自Sematext的監控與日志工具。如果你已經熟悉Logstash,Kibana,Prometheus,Grafana這些監控或日志解決方案,那么朋友請認真閱讀本文,它將向你展示SPM和Logsene為Rancher用戶帶來了什么樣的功能,和其它解決方案有著什么樣的差異。
接觸Sematext Docker Agent
Sematext Docker Agent 是一個時下Docker原生的監控及日志采集代理(Agent)程序。它在每一個Docker宿主機運行一個非常小的容器,用以為所有集群節點以及這些節點上的容器采集日志、系統指標與事件。Agent代理程序監聽所有Rancher管理的節點,在部署Sematext Docker Agent后,所有的日志、Docker事件、各項指標都能被外部所訪問。
這將變得很有價值,為什么呢?因為它意味著你不再需要耗費幾個小時甚至好幾天時間去弄明白究竟需要采集哪些數據或如何將它們圖表化。還有,你不需要花資源來維護你自己的日志監控體系,你的Docker系統指標及事件都會輸出給SPM 而日志將輸出給Logsene(SPM是一個應用程序性能監控服務,它支持與諸多平臺進行集成,這當然也包括Docker,而Logsene 是一個日志管理服務,一個托管于Rancher的ELK應用棧,它能很好的和Kibana和Grafana一并工作)
DevOps工具對比
有一些Docker日志與指標處理的開源工具供我們選擇,比如cAdvisor以及Logspout。遺憾的是,這些工具都不具備足夠的綜合能力。一種解決辦法是集成一系列工具來達成目標,可是這樣的后果是把體系帶向“Franken-monitoring(指技術大雜燴,各個組件并不能按承諾的功能正常運行)”的方向,用戶將因此而背負沉重的技術債,也沒有人會愿意解決這種復雜的故障。因此,另一種解決辦法像Sematext Docker Agent這樣的工具,則只是將cAdvisor和Logspout進行了結合,其功能尤其關注日志管理,比如格式檢查,日志語法分析,數據改進(Geo-IP地址地理位置信息,元數據標簽等)以及日志路由。
通過Rancher Catalog配置Sematext Docker Agent
在Rancher平臺設置Sematext Docker Agent,你只需要選擇合適的catalog模板即可(在Rancher的社區Catalog條目下查找“Sematext” )。我們來快速的瀏覽一下Sematex提供了哪些功能?如何在Rancher平臺對其進行設置?
Docker Compose及Kubernetes自動日志標簽
所有的日志均被加上了元數據標簽,這包含了對Docker/Rancher Compose項目及Kubernetes的支持:
針對Docker Container
容器ID
容器名
鏡像名
針對Docker/Rancher Compose
服務名
項目名
容器數(如果你設置了Scale=N)
針對Kubernetes
請注意Kubernetes容器的日志和其它Docker容器的日志并沒有什么很大的不同,然而Kubernetes用戶需要訪問已部署的pods的日志,因此,為日志搜索而抓取Kubernetes特有的信息變得非常有用,例如:
命名空間
Pod名稱
容器名稱
Kubernetes UID
訣竅:如需啟用Kubernetes標簽,請設置Kubernetes=1
日志路由
對于較為龐大的部署,你也許需要針對不同租戶或應用對日志進行索引,將其輸出到不同的路徑或Logsene應用處理(這樣你也可以區分不同的用戶對不同日志的訪問權)。我們使這個變得非常簡單:為你的容器簡單地添加一個Docker標簽,或設置LOGSENE_TOKEN環境變量(LOGSENE_TOKEN=your app token),于是Sematext Docker Agent會將日志發送至正確的索引項!用這種方式你完全不需要一個中心配置文件來映射容器和索引項/令牌,于是日志路由變得非常靈活,動態與彈性化。
集成的日志語法分析器
日志的處理基于Docker API以及一個叫做logagent-js的庫,該項目被Sematext所開源。這個分析框架包含了日志格式檢測和分析標準正式Docker容器所使用的不同日志格式的模式:
Web服務器例如Nginx、Apache httpd或其它使用常見Web服務器日志格式
搜索引擎類似Elasticsearch和Solr
消息隊列類似Apache Kafaka及nsq.io
檢測JSON日志格式,通常被Node.js程序所使用,例如bunyan和winston日志框架
提示: 如果要創建自定義模式,請在Rancher Catalog模板里把它們添加到叫做LOGAGENT_PATTERNS的字段里。
自動的容器日志Geo-IP增強項
從Docker容器之外獲取到經過采集運送并分析后的日志已經節約了大量的時間,但是有一些應用日志需要從其它數據源獲取額外的增強信息。一個常見的案例是增強Web Server的日志信息(或者說任意包含IP地址信息的日志),為日志中的IP地址提供其地理位置信息。
Sematext Docker Agent 支持Geo-IP enrichment of docker logs。它使用Maxmind Geo-IP輕量數據庫,它能為你定期的提供更新信息,無需停止容器或為其掛載包含Geo-IP數據庫的新卷,或任何其它手動操作。
訣竅: 如果需要開啟Geo-IP增強功能,請設置環境變量GEOIP_ENABLED=true。
過濾容器日志
在某些場景,我們只需要收集重要應用的日志而忽略掉那些較低優先級的或較為嘈雜的服務日志(例如那些頻繁的清理工作)。這樣我們可以使用白名單或黑名單(針對容器名或鏡像名)來處理這些容器即可,其設置采用正則表達式匹配相應的元數據字段。
Whitelist containers | |
MATCH_BY_NAME | 正則表達式對容器名進行白名單設置 |
MATCH_BY_IMAGE | 正則表達式對鏡像名進行白名單設置 |
Blacklist containers | |
SKIP_BY_NAME | 正則表達式對容器名進行黑名單設置,將日志忽略該容器 |
SKIP_BY_IMAGE | 正則表達式對鏡像名進行黑名單設置,將日志忽略該鏡像 |
如何使用Sematext Catalog項目
在Rancher的UI里,進入社區的Catalog項目列表,搜索關鍵字“sematext”、“monitoring”或“logs”即可。
點擊“View Details”,在“Configuration Options”選項里輸入SPM和Logsene App的tokens。你可以從https://apps.sematext.com進行注冊并創建你的SPM和Logsene應用,然后即可獲取這些訪問令牌(tokens)。如果你的Rancher集群運行在防火墻(代理)之后, 你需要在HTTPS_PROXY或 HTTP_PROXY環境變量處填寫proxy URL。如果你在這個集群里同時也運行了Kubernetes,請選擇KUBERNETES=1。
如果你想收集所有的日志,不要填寫任何容器或鏡像名的過濾值,直接點擊“Launch”即可。
總結
我們希望這篇對Rancher平臺中Sematext Docker Agent的介紹,能幫助你在開始對Docker進行監控與日志處理時,不用采用大雜燴的繁瑣模式。該項目完整的配置參數可從Github獲得參考。 我們相信新的Catalog模板已經能覆蓋最常用的選項,如果你發現一些重要項目缺失,請將其提交至Rancher community catalog (提交issue或是pull request)。結合Rancher試用一下Sematext Docker Agent 吧,所有服務將被輕松接管,你將就此高枕無憂。Rancher Community Catalog讓日志監控系統能瞬間設置并運行起來,一切都變得如此容易。
原文來源:Rancher Labs
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。