簡體   English   中英

最佳實踐:基於java的微服務日志管理,運行在k8s上

[英]Best practices: log management for microservices based on java, running on k8s

我們有基於 Java 的應用程序 [我們使用 SpringBoot 和 Dropwizard],遵循微服務架構,在 K8s 集群上運行。

我們正在使用 log4j 打印日志消息。 我們已配置 log4j 將日志寫入文件。 我們發現訪問這些日志非常困難 [目前我們執行 docker 容器並查看日志]。 我正在做一些研究,很多人建議設置 log4j 將日志寫入標准輸出流或控制台而不是文件。 但是我們希望日志保存更長的時間[更像是長時間存檔]。

因此,對於這一點,看起來標准是 EFK 或 ELK [開源選項]。 我只是想了解為了使用 log4j 為應用程序提供可靠的日志記錄,需要遵循哪些最佳實踐/配置。 部署和配置 EFK 或 ELK 是一個不錯的選擇? 如果是這樣,有人可以讓我知道我應該如何修改我的 log4j 屬性以將日志發送到堆棧嗎?

這是一個觀點問題,所以我會以觀點的方式回答。 我們遇到過這個問題。 問題在於 log4j(或 log4j2)日志非常繁瑣,例如,每次您遇到 Java 異常時,它都會被打印成多行。 這與容器的常規標准輸出日志相結合似乎令人費解,並且將所有內容與標准輸出分開以發送到Fluentd或類似logspout的東西會很痛苦

您可以在容器中分配磁盤空間並將 log4j2 日志發送到容器內的文件中。 然后,您可以定期修剪現有容器或截斷日志。 使用 [Kubernetes](您還可以閱讀Kubernetes 日志記錄,您也可以設置FluentdFilebeat sidecar 來傳送您的日志。

但在這種情況下,IMO 的最佳解決方案是將 log4j 日志直接發送到 Elasticsearch 集群,並可能將數據存儲在其自己的索引中。 這是您可能可以使用的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM