Kubernetes日志采集


Kubernetes日志打印方式

標准輸出

  docker標准輸出日志stdout和stderr,使用docker logs或者kubectl logs查看最新的日志(tail)。 如果想看到更多的日志,在宿主機目錄/var/lib/docker/containers可以找到對應的全部日志。標准輸出是k8s社區推薦的日志輸出方式。

日志文件

 

  下面將從路徑、掛載兩方面介紹。

  • 默認路徑

 

如何使用log4j打印的日志:如果打印的業務日志不采用任何掛載方式,那么業務日志默認打在容器里邊的目錄中。根據不同的存儲驅動,參考鏈接:https://docs.docker.com/storage/storagedriver/select-storage-driver,在宿主機上將有不同的掛載目錄。以華為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、通過docker命令可以直接訪問

缺點:1、容器停止后,日志會被立即清理;2、如果一個容器內多個進程的標准輸出,會被收集到一個文件中,區分不了。

日志文件,默認輸出路徑

優點:不需要額外指定掛載路徑

缺點:1、容器停止后,日志會被立即清理;2、容器間目錄是隔離的,各個容器的rootfs不能互相訪問,即使是特權容器也不能訪問。

日志文件,指定主機目錄掛載

優點:文件保存在主機上,容器停止也不會丟失。

缺點:開發(部署)過程中需要額外指定主機目錄進行日志存儲。

日志文件,emptyDir掛載

優點:不需要額外指定掛載路徑。

缺點:pod刪除后,日志會被立即清理。

采集部署方式

  • sideCar方式

  即使用sideCar方式,將采集進程運行在用戶的pod中,參考fluentd。

0403_1.jpg

  • 虛機方式

  使用普通虛擬機方式部署到主機上,直接采集mount到主機上的目錄。 

0403_2.jpg

  • 容器方式

  即容器部署,作為特權容器掛載在host的根目錄。

0403_3.jpg

總結

不同的日志打印和掛載方式都有自己的優勢,沒有一個標准說必須使用哪一種,主要看這樣的方式是否契合自己的業務。對於K8S集群來說,采集服務最好是容器化的,才能更好地部署和管理采集進程等。綜合各種因素,華為雲AOM采用第三種部署方式,契合華為CCE容器服務的日志采集。

相關服務請訪問:https://support.huaweicloud.com/cce/index.html?utm_content=cce_helpcenter_2019


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM