Kubernetes日誌採集
Kubernetes日誌列印方式
標準輸出
docker標準輸出日誌stdout和stderr,使用docker logs或者kubectl logs檢視最新的日誌(tail)。 如果想看到更多的日誌,在宿主機目錄/var/lib/docker/containers可以找到對應的全部日誌。標準輸出是k8s社群推薦的日誌輸出方式。
日誌檔案
下面將從路徑、掛載兩方面介紹。
-
預設路徑
如何使用log4j列印的日誌:如果列印的業務日誌不採用任何掛載方式,那麼業務日誌預設打在容器裡邊的目錄中。根據不同的儲存驅動,參考連結:,在宿主機上將有不同的掛載目錄。以華為CCE為例,使用的檔案驅動是"devicemapper",掛載根目錄為/var/lib/docker/devicemapper/。透過docker inspect命令可以找到docker掛載的子目錄,參考 "DeviceName":"docker-253:1-1835012-107d7ccf0ab28e58be3553c01225a4d32182a9eec26c89c920ad2db2f9d4c7c7", 掛載的目錄參考: /var/lib/docker/devicemapper/mnt/107d7ccf0ab28e58be3553c01225a4d32182a9eec26c89c920ad2db2f9d4c7c7/rootfs。透過此目錄加上容器內日誌目錄,就可以很快找到對應的業務日誌了。
-
日誌掛載
日誌掛載分兩種:
i. 指定主機目錄掛載
ii. emptyDir掛載
i. 指定主機目錄掛載的日誌檔案,針對特定的一些場景,如日誌檔案比較大,日誌檔案很重要,需要額外備份等。日誌需要額外掛載檔案目錄。配置資訊參考:
"volumeMounts": [{ "mountPath": "/var/paas/sys/log/amsmetric", "name": "ams-log", "policy": { "logs": { "rotate": "" } } }] "volumes": [{ "hostPath": { "path": "/var/paas/sys/log/amsmetric" }, "name": "ams-log" }]
對於已經掛載到主機指定目錄的日誌,直接透過主機目錄就訪問了。
ii. emptyDir掛載
"volumeMounts": [{ "mountPath": "/var/paas/sys/log/amsmetric", "name": "ams-log" }] "volumes": [{ "name": "ams-log", "emptyDir": {} }]
配置完成後,執行日誌將會顯示到主機上,主機上路徑參考:
/opt/varlib/kubelet/pods/0e0a38b0-12f7-11e9-9f33-286ed488da5c/volumes/kubernetes.io~empty-dir/ams-log
-
日誌輸出方式對比
標準輸出(stdout|stderr)
缺點:1、容器停止後,日誌會被立即清理;2、如果一個容器內多個程式的標準輸出,會被收集到一個檔案中,區分不了。
日誌檔案,預設輸出路徑
優點:不需要額外指定掛載路徑
缺點:1、容器停止後,日誌會被立即清理;2、容器間目錄是隔離的,各個容器的rootfs不能互相訪問,即使是特權容器也不能訪問。
日誌檔案,指定主機目錄掛載
優點:檔案儲存在主機上,容器停止也不會丟失。
缺點:開發(部署)過程中需要額外指定主機目錄進行日誌儲存。
日誌檔案,emptyDir掛載
優點:不需要額外指定掛載路徑。
缺點:pod刪除後,日誌會被立即清理。
採集部署方式
-
sideCar方式
即使用sideCar方式,將採集程式執行在使用者的pod中,參考fluentd。
-
虛機方式
使用普通虛擬機器方式部署到主機上,直接採集mount到主機上的目錄。
-
容器方式
即容器部署,作為特權容器掛載在host的根目錄。
總結
不同的日誌列印和掛載方式都有自己的優勢,沒有一個標準說必須使用哪一種,主要看這樣的方式是否契合自己的業務。對於K8S叢集來說,採集服務最好是容器化的,才能更好地部署和管理採集程式等。綜合各種因素,華為雲AOM採用第三種部署方式,契合華為CCE容器服務的日誌採集。
相關服務請訪問:https://support.huaweicloud.com/cce/index.html?utm_content=cce_helpcenter_2019
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908804/viewspace-2640264/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 日誌採集/分析
- 日誌採集框架Flume框架
- 日誌服務之使用Nginx模式採集日誌Nginx模式
- Kubernetes 叢集日誌 和 EFK 架構日誌方案架構
- Kubernetes叢集日誌詳解
- 日誌服務 HarmonyOS NEXT 日誌採集最佳實踐
- ELK太重?試試KFC日誌採集
- KubeSphere 多行日誌採集方案深度探索
- fluentd收集kubernetes 叢集日誌分析
- 應用日誌採集是什麼意思?批次採集應用日誌軟體用哪個?怎麼操作?應用日誌
- IT小白也能輕鬆get日誌服務---使用Nginx模式採集日誌Nginx模式
- Docker筆記(十三):容器日誌採集實踐Docker筆記
- Android 崩潰日誌採集元件-DhccCrashLibAndroid元件
- 一文搞懂 SAE 日誌採集架構架構
- 轉轉容器日誌採集的演進之路
- 遊戲日誌分析2:全方位資料採集遊戲
- IoT日誌利器:嵌入式日誌採集客戶端(C Producer)釋出客戶端
- 騰訊雲容器服務日誌採集最佳實踐
- 針對Fluent-Bit採集容器日誌的補充
- Logtail檔案日誌採集之完整正則模式AI模式
- vivo大資料日誌採集Agent設計實踐大資料
- 【轉】Unix系統日誌介紹和集中採集思路
- tomcat日誌集中採集、分析與展示的幾種方法Tomcat
- 服務日誌及控制代碼數採集推送指令碼指令碼
- 手把手教程:使用 Fluentbit 採集夜鶯日誌寫入 ElasticSearchElasticsearch
- 雲原生環境下的日誌採集、儲存、分析實踐
- 無需重啟應用,動態採集任意點位日誌
- 輕量級日誌採集系統Loki搭建:Loki + Promtail+GrafanaLokiAIGrafana
- Logtail從入門到精通(二):開啟日誌採集之旅AI
- 離線日誌採集流程
- 日誌監控實踐 - 監控Agent整合Lua引擎實現多維度日誌採集
- 如何使用Prometheus採集SAP ABAP Netweaver的應用日誌資料Prometheus應用日誌
- 最全 Kubernetes 審計日誌方案
- 直擊痛點,詳解 K8s 日誌採集最佳實踐K8S
- [平臺建設] 大資料平臺如何實現任務日誌採集大資料
- flume日誌採集,hbase資料儲存,hive查詢輸出(簡單整合)Hive
- 在滴滴雲 DC2 雲伺服器上搭建 ELK 日誌採集系統伺服器
- idou老師教你學Istio :如何用istio實現監控和日誌採集