在Docker環境中,我的Java-App通過log4j在STDOUT上進行日志記錄,這些資訊將被發送到Graylog實體。除了將Console-Appender配置為使用JsonLayout外,并沒有特別的日志配置。
我的docker-compose.yml片段:
logging:
driver: gelf
選項:
gelf-address: "tcp://[GRAYLOG_HOST]:[PORT]"
tag: "[...]"
那里一切都很好。但是我們正在考慮將這個環境改為K8s。
K8s中也會有一個Graylog實體。看起來,docker-compose.yml的日志設定沒有K8s的對應。看來,我必須使用某種日志代理,例如fluent-bit。但是fluent-bit的檔案看起來,它只能從作為輸入的日志檔案中收集日志(還有一些),但不能從STDOUT中收集。
我有以下問題:
我有以下問題:
- 是否有其他可能直接從STDOUT讀取日志并將其發送到Graylog?
- 如果我必須將日志資訊記錄到一個日志檔案中,以便從 fluent-bit 讀取。我是否需要配置log4j來做一些滾動策略以防止日志檔案越來越大?我不想 "浪費 "我的資源 "僅僅 "用于日志記錄。
- 你是如何處理K8s中的應用日志的?
也許我誤解了K8s中的日志原則。歡迎向我解釋。
uj5u.com熱心網友回復:
是否有另一種可能,直接從STDOUT中讀取日志,并將其發送到Graylog?
Fluent Bit允許通過STDIN收集資料。將您的應用程式的 STDOUT 重定向到 Fluent Bit 的 STDIN,您就可以了。
如果我必須將日志資訊記錄到一個日志檔案中,以便從 Fluent-bit 讀取。我是否需要配置log4j來做一些滾動策略,以防止日志檔案越來越大?我不想 "浪費 "我的資源 "僅僅 "用于日志記錄。
在這種情況下,你可以使用logrotate 你是如何處理K8s中的應用程式日志的? 三種可能的方法:
我建議你使用sidecar容器來收集日志。這可能是最廣泛使用的解決方案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331019.html
標籤:
